跳到内容

↵ 换行符与编码转换

一次性转换文本的换行符 (LF / CRLF / CR)、BOM、字符编码 (UTF-8 / Shift-JIS / EUC-JP)、缩进 (制表符 ⇔ 空格)、行末空白和重复空行。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式

🔒 关于隐私

📂 拖放或点击选择文件 (可选)

📖 常见的坑

一次性转换换行符(LF / CRLF / CR)、BOM、字符编码、缩进与行尾空白。处理全部在浏览器内完成。换行符看不见,因此麻烦并非发生在「你想转换它」的时候,而是发生在「你没察觉它们混在一起」的时候——Git 差分覆盖了每一行、shell 脚本跑不起来、PHP 抛出莫名其妙的错误,背后往往就是它。

情形 会发生什么 怎么处理
Git 的差分变成了整个文件 若你只改了一行,却整份文件的每一行都显示为已修改,那几乎必然是换行符变了。根源是各人的 core.autocrlf 设置不同Windows 的默认值(true)在检出时转成 CRLF、提交时转回 LF,而 macOS 与 Linux 的默认值(false)什么也不做。在混合团队里,每保存一次换行符就翻转一次,评审也就无从进行。你的编辑器是「保留所打开文件的换行符」还是「始终写 LF」,同样会改变结果。 请在仓库中放置 .gitattributes,写上 * text=auto eol=lf——与个人配置不同,它随仓库分发,因此对所有人应用同一条规则core.autocrlf 属于各自的环境变量,作为统一团队的手段并不可靠。确实需要 CRLF 的文件(如 Windows 批处理)单独指定:*.bat text eol=crlf若已经混杂,请执行一次 git add --renormalize .,把所有文件按规则归一化——它会产生一个巨大的提交,因此请与其他改动分开、单独提交并跳过逐行评审
因为 BOM 而跑不起来 BOM(字节顺序标记)是文件开头三个看不见的字节。在 UTF-8 中它本无必要,但 Windows 记事本等默认会加上。典型的危害:<?php 之前有 BOM,这三个字节就会先被输出,导致 headers already sent 错误#!/bin/bash 之前有 BOM,shebang 就不被识别,脚本无法执行多数 JSON 解析器遇到 BOM 会报语法错误每一种情况的元凶都是三个看不见的字节,因此把文件翻来覆去地看也发现不了。 UTF-8 请不要加 BOM。UTF-8 不存在字节序歧义,因此 BOM 的本来用途(指示字节序)根本用不上唯一的例外是要用 Windows 版 Excel 打开的 CSV没有 BOM,Excel 在日文环境下会按 Shift-JIS 读取而乱码。仅此一种情形,才有加 BOM 的理由。判别很快:file 命令是否输出 UTF-8 Unicode (with BOM) text,或 head -c 3 file | xxd 是否返回 efbb bf遇到「莫名其妙跑不通」的文件,请先看它的头三个字节,再去怀疑内容——几秒钟就能排除。
制表符与空格混用导致语法错误 各语言对缩进的处理完全不同。Python 3 明确拒绝制表符与空格混用,会抛出 TabError——它们在屏幕上看着一模一样,因此由复制粘贴引入的混用最难被发现YAML 完全不允许制表符,用它缩进必定解析失败。反过来,Makefile 的配方行必须以制表符开头,用空格就会得到 missing separator「看起来一样、含义却不同」这一性质,会朝各个方向制造事故。 请在仓库中放置 .editorconfig,按扩展名分别决定——多数编辑器无需额外配置即会遵循,同一条规则因此覆盖所有人。务实的默认是:Makefile 与 Go 用制表符,其余用空格Go 没有争论余地,因为官方格式化工具就用制表符。在 [Makefile][*.go] 下写 indent_style = tab,其余写 indent_style = space 即可。已经混杂的既有文件,请用本工具批量转换;但请把转换单独放在一个提交里,不要与功能改动混在一起在编辑器里打开「显示空白字符」,混用从一开始就不会发生。

批量删除行尾空白只有一个例外在 Markdown 中,行尾的两个半角空格表示「换行」。一批量删除,你想要的换行就没了,段落会连成一片。若要处理 Markdown,请跳过该选项,或在删除后确认渲染效果——不过一开始就用空行分段、而不依赖行尾空格,本就更安全。其次:编码转换是不可逆的从 UTF-8 转到 Shift-JIS,会丢失 Shift-JIS 中不存在的每一个字符:表情符号、部分带圈数字、罗马数字,以及像波浪号那样看起来一模一样、码点却不同的字符。它们会变成替换字符,或直接消失。转换之前,请务必把原文件另存一份——转换后的文件无法还原。本页的处理全部在浏览器内完成,你粘贴的文本不会被传输。

📖 使用方法

  1. 1
    输入文本或文件
    粘贴或拖放文件。
  2. 2
    选择选项
    一次性选择所有选项。
  3. 3
    转换并复制或保存
    复制或下载结果。

❓ 常见问题

为什么 Shift-JIS 有时失败?
浏览器仅原生支持 UTF-8 编码。表外字符替换为 ?。
什么是 BOM?该添加吗?
BOM 是 UTF-8 标识符。Excel CSV 需要,Web/Linux 通常省略。
文件会上传吗?
不会。使用 FileReader 完全在本地处理。

🔗 相关工具

🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送