请问一下 v 友,这是 Linux 上什么编码

2022-07-18 18:54:22 +08:00
 fangch

背景:java 项目部署在 linux 上,读取 linux 上的中文文件目录
问题:读取到的中文打印出来对照的是:专业技能提升培训->专业房能提升培謿
这是 linux 上的什么编码导致的,怎么只有个别字变了,有 v 友遇到过这种问题吗,帮忙看看?

1015 次点击
所在节点    问与答
5 条回复
charlie21
2022-07-18 20:12:58 +08:00
linux 里需要安装 wenquanyi 中文字体
ByteCat
2022-07-18 20:50:12 +08:00
语言包不完整? dpkg-reconfigure locales 试试
fangch
2022-07-19 11:02:47 +08:00
@charlie21 谢谢,安装过了字体之后,还是没有变,不知道啥原因
@ByteCat 语言包应该是没有问题得,直接打印出中文是没有问题得
ysc3839
2022-07-19 15:47:44 +08:00
感觉是你代码问题,UTF-16 的原始数据被当成了某个双字节编码处理了一遍。
原字符串使用 UTF-16 编码的数据是 13 4E 1A 4E 80 62 FD 80 D0 63 47 53 F9 57 AD 8B
新字符串使用 UTF-16 编码的数据是 13 4E 1A 4E 3F 62 FD 80 D0 63 47 53 F9 57 3F 8B
可用看到是某个字节被替换成了 3F ,而 3F 是 ASCII 下的问号“?”。
fangch
2022-07-19 16:43:05 +08:00
@ysc3839 谢谢解答,但是代码是很普通得就是 File[] fs = file.listFiles()列出中文目录<br>
结果就变成这样得;,当前得编码 System.getProperty("file.encoding")是 GBK,其他得没有啥了

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

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

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

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

© 2021 V2EX