首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java国际化

Java国际化
EN

Stack Overflow用户
提问于 2009-10-19 23:02:45
回答 4查看 484关注 0票数 1

我有一个Java字符串,我在操作它时遇到了麻烦。我有一个字符串s,它的值是丞(我随机选择的一个中文字符,我不会说中文)。如果我打电话给

代码语言:javascript
复制
String t = new String(s.getBytes());
if (s.equals(t))
    System.out.println("String unchanged");
else
    System.out.println("String changed");

然后,我得到字符串更改的结果。有人知道这是怎么回事吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-19 23:14:19

实际上,我想通了,很抱歉发了这篇文章。我使用的是缺省的Java字符集,而不是显式地将其转换为UTF-8字符集。它现在起作用了。

票数 2
EN

Stack Overflow用户

发布于 2009-10-19 23:09:18

因为that method

使用平台的缺省字符集将此字符串编码为字节序列

如果您的默认字符集是ie US-ASCII,您将不会获得该中文字母所使用的相同字节

我想在这个过程中可能会添加/丢弃额外的位/字节。

尝试使用getBytes( String charSetName )

代码语言:javascript
复制
public byte[] getBytes(String charsetName)

使用正确的charsetName

票数 6
EN

Stack Overflow用户

发布于 2009-10-20 07:09:31

getBytes()方法使用默认编码。根据文档:

当需要对编码过程进行更多控制时,应该使用CharsetEncoder类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1591612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档