在 win 下用 git bash 里的 paste 输出了个 txt ,因为有中文用记事本打开是乱码的,用记事本重新保存成 utf-8 、gbk 、GB18030 都不行,这样该怎么处理才能让我记事本打开正常呢。在 gitbash 里用 cat 显示是正常的。
1
Buges 2022-03-12 13:56:32 +08:00 via Android
open with encoding 和 save as encoding
|
2
thinkershare 2022-03-12 14:15:18 +08:00
先用正确的编码打开, 然后保存成 UTF-8 编码, 另外记事本应该是可以正确识别 UTF-8 的, 你可以使用 VSCode 开文本文件, VSCode 应该是可以猜测出你的正确编码, 然后按照一楼所说, 修改编码为 UTF-8
|
3
thinkershare 2022-03-12 14:18:05 +08:00
另外我发现记事本是可以正常打开 GB2312 和 UTF-8 的, 你先确认一下你的文件实际使用的编码是什么, VSCode 的右下是可以修改打开文件的编码方式的, 自己换几个试一试, 常见的就是 UTF-8/UTF-16/GB2312/GBK
|
4
cssk 2022-03-12 14:47:59 +08:00 via iPhone
记事本小心,BOM
|
5
imn1 2022-03-12 16:33:02 +08:00
windows 内,unicode 这个词,多数情况(不一定)是指 UTF-16 LE ;而 gb2312 通常是指 GBK ,因为 gb2312 只有六千多汉字,是 win32 时代的,现在基本都是 GBK ,兼容 gb2312 ,只是沿用了旧称罢了
linux 大多数是无 BOM ,windows 使用 UTF-8/16 保存的东西多数是带 BOM 的 不要使用记事本,使用现代的编辑器,能自动或手动识别多种编码的编辑器 另,你输出 txt 是使用 > 命令么?这种情况要看 cmd 自身的编码是什么 在 cmd 里面运行 chcp 无参数命令,就能显示 cmd 的编码,962 相当于 GBK ,65001 相当于 utf-8 ,其他数字可以去网上查 "windows code page" |
6
shenhualv7 OP @Buges @thinkershare @cssk@inm1
谢谢大家的建议,已经弄好了,是因为之前合并的一个文件有 bom ,而且这个文件是拼在后面的,也就是这个 bom 不在合并后文件的第一个字符处,所以合并之后的文件怎么改编码也改不对。 另外我的 vscode 好像不支持打开 txt 。。什么鬼。。 |
7
thinkershare 2022-03-16 00:39:08 +08:00
@shenhualv7 VSCode 没啥文件打不开, 包括二进制文件都可以通过插件直接查看 Binary 或者 HEX, 文件内容和后缀没啥关系, 你直接将文件拖入到 vscode 就好了. 找个博客好好理解一下字符集, 编码规则, 存储编码, 这个对写代码还是有点作用的, 另外你这种混合编码写入到一个文件是不好处理的, 怎么改编码都会得到错误结果, 你必须知道在字节的多少偏移位置开始是另外要给文件, 然后写代码, 自己统一转换为同一种编码! UTF-8 的 BOM 在 Windows 上是个历史遗留问题, 其它的 UTF 存储格式的 BOM 是必须的, 将不同编码的二进制流写入到文件的确需要小心!
|