java String.charAt在linux下获取中文怎么是乱码

在java程序中写入一个Stringstr="我是中国人",我想获得其中的"中"字,在windows下只需要str.charAt(2)就可以获得这个"中"字,可是在lin... 在java程序中写入一个String str="我是中国人",我想获得其中的"中"字,在windows下只需要str.charAt(2)就可以获得这个"中"字,可是在linux下用同样的方法得出的却是乱码,怎么回事?我要如何操作才能获取这个"中"字呢? 展开
 我来答
郝子琪
2011-12-24 · TA获得超过1746个赞
知道大有可为答主
回答量:1579
采纳率:0%
帮助的人:1471万
展开全部

跟编码有关。试试有结论再告诉你。 

1、跟Eclipse的编码设定有关。具体路径:Windows->Preferences->General->Workspace中有一个设定项为“Text file encoding”,这个选项指定了保存源码时使用的编码方式。我看了一下在Window下选项为Default(GBK),Linux下该选项为Default(UTF-8),编码方式的不同,决定了“我是中国人”转换成Byte数据不同。这就是为什么在Window下和在Linux下不同结果的原因。

2、在Linux环境下,通过修改上述设定项为Other: GBK,可以得到和Window下的同样效果。修改后的设定截图如下:

yylronaldo
2011-12-23 · 超过28用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:94.2万
展开全部
可以试试先把str拆为byte数组,然后使用String的构造方法重新编码:
byte[] tmp = str.getBytes("ISO-8859-1");
String b_str=new String(tmp,"utf-8");
System.out.println(b_str);
可以这样试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
128兆
2011-12-23 · TA获得超过478个赞
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:145万
展开全部
试试用subString(2,3);
charAt在linux取到的是单字节的东西,而一个中文字是双字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lh502101107
2011-12-23 · TA获得超过840个赞
知道小有建树答主
回答量:334
采纳率:100%
帮助的人:198万
展开全部
用subString吧,charAt获得一个字节,中文一个字多少个字节?
追问
subString 还是乱码啊,试过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式