背景:java 项目部署在 linux 上,读取 linux 上的中文文件目录
问题:读取到的中文打印出来对照的是:专业技能提升培训->专业房能提升培謿
这是 linux 上的什么编码导致的,怎么只有个别字变了,有 v 友遇到过这种问题吗,帮忙看看?
1
charlie21 2022-07-18 20:12:58 +08:00 via iPhone 1
linux 里需要安装 wenquanyi 中文字体
|
2
ByteCat 2022-07-18 20:50:12 +08:00 1
语言包不完整? dpkg-reconfigure locales 试试
|
3
fangch OP |
4
ysc3839 2022-07-19 15:47:44 +08:00 1
感觉是你代码问题,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 下的问号“?”。 |
5
fangch OP @ysc3839 谢谢解答,但是代码是很普通得就是 File[] fs = file.listFiles()列出中文目录<br>
结果就变成这样得;,当前得编码 System.getProperty("file.encoding")是 GBK,其他得没有啥了 |