处理多语言编码

时间:2011-08-11 23:42:47

标签: java iphone encoding

在我的应用程序中,我阅读了来自Twitter的推文,但推文不受语言限制。因此,当我尝试发送中文/日文推文的响应时,内容无法正确显示。我目前已经设置了

response.setContentType("text/html;charset=UTF-8");

发送回复之前。

我们如何处理多种语言?

我可以看到发送的消息

  

{“lastPost”:{“lastUpdate”:“毋成金口”,“pubDate”:“星期五8月12日00:39:09 UTC 2011”,“message_id”:101814948329562112}

这是一个json字符串并添加到响应中..

在我的客户端,即iphone,lastpost是“????”

2 个答案:

答案 0 :(得分:1)

告诉浏览器该页面是UTF-8是一件好事,但除非你确定你实际上只在页面中写了UTF-8,否则没用。

确保发生这种情况:

  1. 每当您从Twitter或其他任何地方阅读时,始终需要UTF-8数据,请确保您收到的是UTF-8字节。
  2. 当您从原始字节创建字符串时,Java默认使用“平台默认编码”,它可以是任何内容。从字节数组或使用Reader创建新String时,会发生字节转换字节。这两种方法都允许您显式定义您希望字节的绑定。一旦检查了第1点并且您正在接收UTF-8字节,请确保您在指定的应用程序中指定在将字节转换为字符串时使用UTF-8。
  3. 使用Writer时,要将字符串转换为例如发送到浏览器(servlet writer)的字节,同样的规则适用:尝试显式并始终指定UTF-8
  4. 如果您将内容存储在数据库中,那么您有两个编码问题。第一个是数据库在与应用程序通信时使用的(连接编码),第二个是数据库实际存储字符串的编码(存储编码)。通常,您只能从Java指定连接编码,而存储编码在创建时在数据库中指定(如果您使用的是mysql,则搜索“collat​​ion”)。
  5. 检测应该是UTF-8的字符串被严重重新编码的位置是一项艰巨的任务。 99%的时候,它被转换为ISO-latin或类似的编码,这会导致像à或ì这样的特殊字符显示为两个垃圾字符。通常调试是找出这种情况的唯一方法。

答案 1 :(得分:0)

问题在于客户端编码..它被设置为ISO -