如何在Textmate等编辑器中插入/复制粘贴Unicode空白字符到文本文件?
解决Mac上创建含特殊Unicode空白的测试CSV问题
我之前也踩过编辑器自动转换特殊空白的坑,给你几个靠谱的方法,完全避开复制粘贴的自动转换问题:
方法1:用终端命令直接生成(最稳妥)
直接通过printf命令写入带Unicode转义的内容,绕开编辑器的自动处理,生成的文件绝对保留原始特殊空白:
# 生成包含多种特殊空白的测试CSV printf "ID,Name,Description\n1,Alice\u00A0Smith,Uses non-breaking space\n2,Bob\u2002Jones,Uses en space\n3,Charlie\u2003Brown,Uses em space\n4,Dave\u2009Wilson,Uses thin space\n5,Eve\u3000Taylor,Uses full-width space\n" > test_whitespace.csv
每个\uXXXX对应一个Unicode空白字符:
\u00A0: 非断空格\u2002: En空格(半个Em宽度)\u2003: Em空格(一个M宽度)\u2009: 窄空格\u3000: 全角空格
生成后可以用od -t x1 test_whitespace.csv查看字节码,确认特殊空白的编码(比如非断空格是C2 A0),确保没被转换。
方法2:用TextEdit手动插入(需关闭智能替换)
如果习惯用GUI编辑器,TextEdit在纯文本模式下可以保留原始字符,只要关掉自动替换:
- 打开TextEdit,新建文件,切换到纯文本模式(
Format > Make Plain Text) - 打开偏好设置 → 编辑,取消勾选智能引号和破折号、替换连续空格为制表符这两个选项
- 插入特殊空白:按住
Option+Shift+U,输入Unicode十六进制码(比如00A0),按回车就会插入对应的空白字符,不会被转成普通空格
方法3:用nano编辑器插入
终端里的nano也支持直接插入Unicode字符:
- 用
nano --encoding=utf-8 test.csv打开文件(确保UTF-8编码) - 按
Ctrl+V,再按U,输入Unicode十六进制码(比如2003),回车就插入对应的空白 - 按
Ctrl+O保存,Ctrl+X退出,这样保存的字符不会被修改
验证方法
不管用哪种方法,生成文件后可以用cat -A test_whitespace.csv查看,普通空格显示为 ,非断空格会显示为M- (或其他标记),不同的特殊空白会有不同的显示,这样就能确认它们确实存在于文件中了。
内容的提问来源于stack exchange,提问作者Streamline
相关产品推荐
相关产品推荐

