java String.charAt在linux下获取中文怎么是乱码
在java程序中写入一个Stringstr="我是中国人",我想获得其中的"中"字,在windows下只需要str.charAt(2)就可以获得这个"中"字,可是在lin...
在java程序中写入一个String str="我是中国人",我想获得其中的"中"字,在windows下只需要str.charAt(2)就可以获得这个"中"字,可是在linux下用同样的方法得出的却是乱码,怎么回事?我要如何操作才能获取这个"中"字呢?
展开
4个回答
展开全部
跟编码有关。试试有结论再告诉你。
1、跟Eclipse的编码设定有关。具体路径:Windows->Preferences->General->Workspace中有一个设定项为“Text file encoding”,这个选项指定了保存源码时使用的编码方式。我看了一下在Window下选项为Default(GBK),Linux下该选项为Default(UTF-8),编码方式的不同,决定了“我是中国人”转换成Byte数据不同。这就是为什么在Window下和在Linux下不同结果的原因。
2、在Linux环境下,通过修改上述设定项为Other: GBK,可以得到和Window下的同样效果。修改后的设定截图如下:
展开全部
可以试试先把str拆为byte数组,然后使用String的构造方法重新编码:
byte[] tmp = str.getBytes("ISO-8859-1");
String b_str=new String(tmp,"utf-8");
System.out.println(b_str);
可以这样试试
byte[] tmp = str.getBytes("ISO-8859-1");
String b_str=new String(tmp,"utf-8");
System.out.println(b_str);
可以这样试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试用subString(2,3);
charAt在linux取到的是单字节的东西,而一个中文字是双字节
charAt在linux取到的是单字节的东西,而一个中文字是双字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用subString吧,charAt获得一个字节,中文一个字多少个字节?
追问
subString 还是乱码啊,试过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询