Jan*_*nak 8 java encoding utf-8 utf character-encoding
我从Jersey Web Service获取参数值作为参数,该服务是Japaneses字符.
这里,'japaneseString'是包含日语字符的web服务参数.
String name = new String(japaneseString.getBytes(), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
但是,我能够成功转换一些sting文字,而其中一些文字会产生问题.
以下成功转换:
1) ????
2) ?
3) ???????????????
4) ????
Run Code Online (Sandbox Code Playgroud)
虽然这些不是:
1) ??????
2) ????
Run Code Online (Sandbox Code Playgroud)
当我进一步调查时,我发现这两个字符串正在转换为一些JUNK字符.
1) Input: ?????? Output : ?????????????
2) Input: ???? Output: ??????
Run Code Online (Sandbox Code Playgroud)
知道为什么有些日文字符没有正确转换吗?
谢谢.
你在这里混合概念.
A String只是一系列字符char; a String本身根本没有编码.对于它的价值,用characters上面的替换carrier pigeons.一样.载体鸽没有编码.也没有char.(1)
你在这做什么:
new String(x.getBytes(), "UTF-8")
Run Code Online (Sandbox Code Playgroud)
是一个"穷人的编码/解码过程".您可能已经注意到有两个版本.getBytes():一个是将charset作为参数传递,另一个是不传递的.
如果你不这样做,那就是这里发生的事情,这意味着你将使用你的默认字符集获得编码过程的结果; 然后尝试使用UTF-8重新解码此字节序列.
不要那样做.只需要接收字符串.但是,如果您在将原始字节流读入字符串时遇到问题,则意味着您使用了Reader错误的字符集.修复那部分.
有关更多信息,请阅读此链接.
(1)事实上,a char是UTF-16代码单元与此讨论无关
| 归档时间: |
|
| 查看次数: |
33788 次 |
| 最近记录: |