在我的应用程序中,我从LDAP获取用户信息,有时完整的用户名使用了错误的字符集。例如:
ТеÑÑ61 ТеÑÑовиÑ61
它也可以是英语或俄语,并可以正确显示。如果用户名更改,它将在数据库中更新。即使我更改数据库中的值,它也无法解决问题。
我可以在保存之前修复此问题
new String(incorrect.getBytes("ISO-8859-1"), "UTF-8");
但是,如果我将它用于包含俄语字符的字符串(例如,“Тест61Тестович61”),则会得到类似“ ??? 61 ??????? 61”的信息。
您能提出一些可以确定字符串字符集的建议吗?
Java中的字符串AFAIK不保留其原始编码-它们始终以某种Unicode形式在内部存储。您想检测原始流/字节的字符集-这就是为什么我认为您的String.toBytes()调用为时已晚。
理想情况下,如果您可以获取正在阅读的输入流,则可以通过以下方式运行它:http : //code.google.com/p/juniversalchardet/
还有很多其他字符集检测器
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句