win 下用 Linux paste 命令合并输出了个 txt,打开乱码

2022-03-12 13:51:47 +08:00
 shenhualv7

在 win 下用 git bash 里的 paste 输出了个 txt ,因为有中文用记事本打开是乱码的,用记事本重新保存成 utf-8 、gbk 、GB18030 都不行,这样该怎么处理才能让我记事本打开正常呢。在 gitbash 里用 cat 显示是正常的。

2149 次点击
所在节点    Linux
7 条回复
Buges
2022-03-12 13:56:32 +08:00
open with encoding 和 save as encoding
thinkershare
2022-03-12 14:15:18 +08:00
先用正确的编码打开, 然后保存成 UTF-8 编码, 另外记事本应该是可以正确识别 UTF-8 的, 你可以使用 VSCode 开文本文件, VSCode 应该是可以猜测出你的正确编码, 然后按照一楼所说, 修改编码为 UTF-8
thinkershare
2022-03-12 14:18:05 +08:00
另外我发现记事本是可以正常打开 GB2312 和 UTF-8 的, 你先确认一下你的文件实际使用的编码是什么, VSCode 的右下是可以修改打开文件的编码方式的, 自己换几个试一试, 常见的就是 UTF-8/UTF-16/GB2312/GBK
cssk
2022-03-12 14:47:59 +08:00
记事本小心,BOM
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"
shenhualv7
2022-03-15 23:21:05 +08:00
@Buges @thinkershare @cssk@inm1
谢谢大家的建议,已经弄好了,是因为之前合并的一个文件有 bom ,而且这个文件是拼在后面的,也就是这个 bom 不在合并后文件的第一个字符处,所以合并之后的文件怎么改编码也改不对。
另外我的 vscode 好像不支持打开 txt 。。什么鬼。。
thinkershare
2022-03-16 00:39:08 +08:00
@shenhualv7 VSCode 没啥文件打不开, 包括二进制文件都可以通过插件直接查看 Binary 或者 HEX, 文件内容和后缀没啥关系, 你直接将文件拖入到 vscode 就好了. 找个博客好好理解一下字符集, 编码规则, 存储编码, 这个对写代码还是有点作用的, 另外你这种混合编码写入到一个文件是不好处理的, 怎么改编码都会得到错误结果, 你必须知道在字节的多少偏移位置开始是另外要给文件, 然后写代码, 自己统一转换为同一种编码! UTF-8 的 BOM 在 Windows 上是个历史遗留问题, 其它的 UTF 存储格式的 BOM 是必须的, 将不同编码的二进制流写入到文件的确需要小心!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX