Java-如何根据实体得知字符集

Java-如何根据实体得知字符集

浮生未歇 发布于 2017-04-27 字数 414 浏览 1010 回复 2

用的是 apache 的 ftp 包去连接 windows 上的一个 filezilla 服务器
不论怎么修改 setContentEncoding 的值,都无法获取到正确的字符集

使用浏览器访问时,发现他们用的实体:

<script>addRow("u5929u7FFCu6D4Bu7F51u5907u4EFD.zip","%E5%A4%A9%E7%BF%BC%E6%B5%8B%E7%BD%91%E5%A4%87%E4%BB%BD.zip",0,"42.9 MB","11-10-30 u4E0Au534812:00:00");</script>

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-07-27 2 楼

事后发现设置成 UTF-8 又解决乱码的问题了
可能是当时有缓存神马的问题吧,比较讨厌的字符集

至于说是实体的字符集,这几天通过学习 Python 有了写新的变通。
诸如 uHHHH 这类的是 Unicode 的字符,低两位一般是 ASCII 直接映射过来的,
所以,知道这个之后,直接将这种类型的数据由 Unicode 转换成对应的标准标准字符即可。

如果是 %HH 类型的字符,是由 URLEncode 搞出来的实体字符,再通过 URLDecode 就可转义回去,问题就可以解决了

清晨说ぺ晚安 2017-06-20 1 楼

答。没有任何办法。也许你可以通过高位与低位的取值范围来猜测出大体的编码,比如utf-8,gbk,big5.latin1之类的编码,但是这永远都只能停留在猜测层面。翻译过来的语义,还是需要人工校对才能确定到底是否“猜测正确”。当你想把它作成一个商业品质的功能时,你会发现你的所有努力,都是徒劳的。因为通过取值范围来判定字符集,这个本身就是一个假命题。

至于如果通过取值范围来定字符集,google一下,你会发现n个版本的正确答案。