↵ 换行符与编码转换
一次性转换文本的换行符 (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
输入文本或文件粘贴或拖放文件。
-
2
选择选项一次性选择所有选项。
-
3
转换并复制或保存复制或下载结果。
❓ 常见问题
为什么 Shift-JIS 有时失败?
浏览器仅原生支持 UTF-8 编码。表外字符替换为 ?。
什么是 BOM?该添加吗?
BOM 是 UTF-8 标识符。Excel CSV 需要,Web/Linux 通常省略。
文件会上传吗?
不会。使用 FileReader 完全在本地处理。
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。