java中文乱码,能说下string.getBytes()和new String()转码是,具体点...
发布网友
发布时间:2022-04-23 13:49
我来回答
共6个回答
热心网友
时间:2022-04-18 22:24
1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")
上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1。
2、而通过【new String(byte[], decode)】的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1")。
因此,通过【String.getBytes(String decode)】方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原。
扩展资料
java中文编码避免乱码
1、为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,比如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式:
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
来得到正确的中文汉字。这样就既保证了遵守协 议规定、也支持中文。
3、String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode ,not decode,从字符串到字节数组是编码的过程,从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程。
参考资料:百度百科-UTF-8
热心网友
时间:2022-04-18 23:42
首先要看你系统本来默认是什么编码方式的了这很重要。
在.java中声明的String变量的字符编码,是与当前文本编辑器使用的字符编码一致
例如,在MyEclipse中,我设置的默认编码为GBK
系统数据依照gbk的编码方式。使用str.getBytes("gbk")把数据还原(这点很重要),
然后利用new String(str.getBytes("gbk"), "utf-8")把数据从gb2312转换成utf-8
所以要清楚知道str.getBytes("gbk")这里的str字符本来是不是gbk编码的很重要,如果它是iso8859-1呢,那就会出错了。也许你不小心弄混了。就会时对时错了。
注意:
在.java中声明的String变量的字符编码,是与当前文本编辑器使用的字符编码一致
例如,在MyEclipse中,我设置的默认编码为GBK
则字符就是gbk编码格式。
热心网友
时间:2022-04-19 01:17
第一个是把字符串重新编码,是一个字节一个字节的重新编码。第二个是创建一个新的字符串。
热心网友
时间:2022-04-19 03:08
getBytes是使用平台默认的编码将字符串编码成byte[].
热心网友
时间:2022-04-19 05:16
new String(str.getBytes("gbk"), "utf-8")
热心网友
时间:2022-04-19 07:41
new String(str.getBytes("gbk"), "utf-8")这样会报错,编码和解码不一样
java中文乱码,能说下string.getBytes()和new String()转码是,具体点...
1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:byte[] b_gbk = "中".getBytes("GBK");byte[] b_utf8 = "中".getBytes("UTF-8");byte[] b_iso88591 = "中".getBytes("ISO8859-1")上面三行代码表示:分别...
java https请求 中文乱码问题
1. 在服务端接收到参数时,utf-8转gbk,无效。2. 在服务端接收到参数时,iso-8859-1转gbk,无效。3. 在发送请求前将中文参数转码,utf-8转iso-8859-1,无效。代码如下:new String(remark.getBytes(“UTF-8”), “ISO-8859-1”)4. 在请求端,HttpHeader设定ContentType为“application/json;...
java get方式中文乱码
get方式提交的参数编码,只支持iso8859-1编码。因此,如果里面有中文。在后台就需要转换编码,如下 String zhongwen = request.getParameter("zhongwen");zhongwen = new String(zhongwen.getBytes("iso8859-1"),"GBK");前提是你页面编码就是GBK,如果是utf-8,那上面那句代码后面就改成utf-8 ...
...String fileNames=new String("中文".getBytes(),"IOS8859-1");什...
对这个String类型的字符串“中文”的编码方式 转换成 "IOS8859-1"类型。下次这种类似的方法和用法 可以参照API中去查找 里面都有举例说明的哦。API就是你java开发过程中的字典角色。用到的时候就去翻翻。希望对你能有帮助
java中UTF-8转GBK为什么不会出现中文乱码?
Java中UTF-8转GBK之所以不会出现中文乱码,是因为UTF-8编码为兼容性最大的字符集编码,它本身就支持中文字符。Java代码转码范例:String s = new String(ss.getBytes(),"GBK");当你的内容本来就是正常的中文字符时,通过上面的语句转为GBK编码是不会有任何问题的,但如果你在转码之前的字符不是正确...
java如何把string转为utf-8
java不同编码之间进行转换,都需要使用unicode作为中转。String str = "任意字符串";str = new String(str.getBytes("gbk"),"utf-8");备注说明:str.getBytes("UTF-8"); 意思是以UTF-8的编码取得字节 new String(XXX,"UTF-8"); 意思是以UTF-8的编码生成字符串 举例:public static String ...
java 怎么 让 text 输出 不乱码 new String(text.getBytes("GB2312...
上面的代码相当于将text从GB2312的编码转换为默认编码。new String(byte[]) 相当于:new String(byte[], defaultCharset),而默认编码是通过:System.getProperty("file.encoding")获取到的。这个参数要么通过启动java程序的时候通过vm参数提供(Eclipse通过配置默认编码可以自动带入,myeclipse的普通程序也...
急!急!JAVA中ASCII转码问题??
String s2 = new String(s1.getBytes("utf-8"),"gb2312"),就会出现乱码现象,所以最好用iso-8859-1作为中间码。所以,楼主除了犯以上错误以外,还有,就不应该用US-ASCII作为中间码,否则,是不能转换为中文的,它们之间无法做到相互转换,只有iso-8859-1才能完美转换成其他编码。
...的post中文是正常的,但是到达服务器上,中文就乱码了。页面已经全部改...
new String(str.getBytes("UTF-8"),"ISO8859-1") 同样的道理解决已经编码的数据要显示到页面的时候就要反着写 还有就是项目中最好使用统一的编码包括:文件保存的时候使用的编码,jsp文件翻译时使用的编码,服务器响应编码,和提交编码,还有就是数据库的编码。eclipse下:jsp和class文件保存时使用编码...
乱码,以response.sendRedirect()这样跳转页面传递中文的时候不能正确...
new String(request.getParameter("start").getBytes("ISO-8859-1"),"gb2312") 或new String(request.getParameter("start").getBytes("ISO-8859-1"),"utf-8") 试试