Charset麻烦(ø为00F8)

时间:2014-09-02 08:32:02

标签: java character-encoding

我从我们的数据库(第三方工具)获取一个字符串 - 我遇到了一个问题 名字 - 有时它是正确的“Tarsøy”,并且一切顺利但有时它是“Tars00F8y”。 这会破坏这个过程 - 我试图通过URLDecoder.decode(name, "UTF-8")编写一些验证函数,它获取一个字符串并返回已验证的函数但不成功。

这就是我从基地得到刺痛的方式:

Database.WIKI.get(index); // the index is the ID of the string 
                            // this is no sql DB 

现在关于“有时” - 这意味着这个代码只是工作不同=)我认为这与内部数据库异常相关联。所以我试着做validate(Database.WIKI.get(index))之类的事情 也许我应该尝试Encode String to UTF-8

之类的东西

1 个答案:

答案 0 :(得分:2)

在Java,JavaScript和(特别有趣的)JSON中,\u00F8存在符号ø。我认为这是发送到数据库,可能来自特定计算机区域设置上的特定浏览器。 \u消失了,瞧瞧。也许它仍然是字符串中不可见的控制字符。这对修理来说很不错。

我的猜测是JSON数据;但是通常JSON库应该解析u-escaped字符。这很奇怪。

检查存储"x\\u00FDx"时会发生什么。焦炭长度是6或7(幸运)。

一些健全性检查:假设你使用UTF-8工作,特别是如果数据是通过HTML或JS到达的话:

  • Content-Type标题文字/ html;字符集= UTF-8
  • (可选)带charset = UTF-8
  • 的元标记
  • <form action="..." accept-charset="UTF-8">
  • JSON:contentType: "application/json; charset=UTF-8"