Java 处理多语言编码
在我的应用程序中,我从twitter上阅读推文,但推文不受语言限制。因此,当我试图发送中文/日文tweet的回复时,内容显示不正确。我目前已经设置了Java 处理多语言编码,java,iphone,encoding,Java,Iphone,Encoding,在我的应用程序中,我从twitter上阅读推文,但推文不受语言限制。因此,当我试图发送中文/日文tweet的回复时,内容显示不正确。我目前已经设置了 response.setContentType("text/html;charset=UTF-8"); 在发送响应之前 我们如何处理多种语言 我可以看到发送的消息 {“lastPost”:{“lastUpdate”:毋成金口","pubDate:“2011年8月12日星期五00:39:09 UTC”,“消息id:10181494832956211
response.setContentType("text/html;charset=UTF-8");
在发送响应之前
我们如何处理多种语言
我可以看到发送的消息
{“lastPost”:{“lastUpdate”:毋成金口","pubDate:“2011年8月12日星期五00:39:09 UTC”,“消息id:101814948329562112}
这是一个json字符串,添加到响应中
在我的客户端,即iphone上,最后的帖子是“?”告诉浏览器页面是UTF-8是一件好事,但没有用,除非您确保您实际上只在页面中写入UTF-8 要确保实现这一点,请执行以下操作:
检测本应为UTF-8的字符串在何处被重新编码是一项艰巨的任务。99%的情况下,它会被转换为ISO拉丁语或类似的编码方式,这会导致像a或ì这样的特殊字符显示为两个字符的垃圾。通常,调试是找出这种情况发生的唯一方法。问题在于e客户端编码..它被设置为ISO-为什么不用UTF-8编码消息推文本身,这样您就只有一种编码?据我所知,您无法在http站点中更改编码本身。您确定您正确捕获了用户输入吗?您在另一端看到了什么?使用示例用户输入和显示更新问题yed输出。为了使2和3更具体,
新的InputStreamReader(流,编码)
是好的,但是新的InputStreamReader(流)
和新的FileReader(文件)
是坏的。类似地,新的OutputStreamWriter(流,编码)
是好的,但是新的OutputStreamWriter(流)
和新的FileWriter(档案)
是不好的。如果你试图清除代码中所有假设默认编码的地方,grep
ing这些模式是一个收集低挂果实的好方法。当我尝试使用chrome扩展检索消息时,效果很好……我想这可能是iphone客户端的问题。@Mike:你不能使用这种形式的构造函数!只有四个构造函数中最长的一个可用!否则您将无法检测到编码错误。查看第三个讲座中的幻灯片43,了解正确的方法。输入流读取器需要第二个构造函数参数Charset.forName(“UTF-8”).newDecoder()
,输出流编写器需要第二个参数Charset.forName(“UTF-8”).newEncoder()
。