GBK,GB2312编码在模拟器里显示乱码,转UTF-8还是乱码

时间:2023-01-06 15:57:45
我获取某个网页的内容,然后在模拟器里显示,中文全部乱码。我再把编码转UTF-8,还是乱码!
注:我获取的网页表头是:<meta http-equiv="content-type" content="text/html; charset=GB2312">
或:<meta http-equiv="Content-Type" content="text/html; charset=GBK">
GBK,GB2312编码在模拟器里显示乱码,转UTF-8还是乱码
请问高手怎么解决啊?

11 个解决方案

#1


你是怎么转的

#2


这样:String value = new String(re.getBytes("GBK"),"UTF-8");
re是网页返回的内容

#3


建项目的时候选UTF_-8这样就行了,你转的话肯定 会变成乱码的,

#4


因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

#5


模拟器永远都是乱码,真机就不了,模拟器的问题

#6


引用 4 楼 aspirehouse 的回复:
因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

我是直接转换成字符串,请问高手应该怎么办啊?

#7


引用 5 楼 kechanghe0705 的回复:
模拟器永远都是乱码,真机就不了,模拟器的问题


这点我不同意,真机该怎么乱还怎么乱

#8


你表头charset=GB2312 又或者charset=GBK    这两种大不一样 
GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,当我们调用getBytes("UTF-8")方法时,会通过计算来增加字节,使得从GBK的2个字节变成UTF-8对应的3个字节。
 
可以看看 http://www.iteye.com/topic/1097560

#9


引用 6 楼 chijiunan 的回复:
引用 4 楼 aspirehouse 的回复:

因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

我是直接转换成字符串,请问高手应该怎么办啊?


关键你这字符串从何而来 网络传输都是二进制的东西 字符串只是最终的表现形式

#10


原因就出在你的re字符串那 把你re获取的代码贴出来看看

#11


重装系统吧

#1


你是怎么转的

#2


这样:String value = new String(re.getBytes("GBK"),"UTF-8");
re是网页返回的内容

#3


建项目的时候选UTF_-8这样就行了,你转的话肯定 会变成乱码的,

#4


因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

#5


模拟器永远都是乱码,真机就不了,模拟器的问题

#6


引用 4 楼 aspirehouse 的回复:
因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

我是直接转换成字符串,请问高手应该怎么办啊?

#7


引用 5 楼 kechanghe0705 的回复:
模拟器永远都是乱码,真机就不了,模拟器的问题


这点我不同意,真机该怎么乱还怎么乱

#8


你表头charset=GB2312 又或者charset=GBK    这两种大不一样 
GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,当我们调用getBytes("UTF-8")方法时,会通过计算来增加字节,使得从GBK的2个字节变成UTF-8对应的3个字节。
 
可以看看 http://www.iteye.com/topic/1097560

#9


引用 6 楼 chijiunan 的回复:
引用 4 楼 aspirehouse 的回复:

因为你re中的字符串已经是乱码了 re肯定是从服务器取得字节再转换成字符串得来的吧 你是怎么把字节转换成字符串re的

我是直接转换成字符串,请问高手应该怎么办啊?


关键你这字符串从何而来 网络传输都是二进制的东西 字符串只是最终的表现形式

#10


原因就出在你的re字符串那 把你re获取的代码贴出来看看

#11


重装系统吧