问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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") 试试

java中怎么解决中文乱码 java写文件中文乱码 java中文乱码解决总结 Java中文乱码解决 java处理乱码 java读取excel文件 java读取文件内容
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
7.1声卡哪个好 word方框里打√符号 用x5做视频,怎么在两个片段间添加照片?? 怎么用剪映给视频添加片段? ...要打满水。已知水管压力是1,5。请问在罐底往上打水快。?还是_百 ... 大力丸在药店叫什么名字 倩女幽魂手游大力丸小力丸怎么获得 哪里有大力丸卖?大约价线是? 泉城是哪里泉城指的是哪座城市 C盘的磁盘清理时"系统队列中的windows错误报告"文件可以删除吗? 中国排名前十名的大山有哪些 中国十大名山排名榜 中国名山排名前十 中国名山排名是怎样的? 微信公众账号有什么功能? 中国十大高山海拔排名 微信公众号怎么创建功能栏目?? 微信公众号 里面 这个功能怎么设置的? 信用卡逾期4天会影响征信吗 招商银行逾期2天会上征信吗? 招商银行逾期四天上征信吗? 招商银行逾期4天影响征信吗? 招商银行信用卡逾期四天会有影响吗 在手机上如何看u盘? 我招行信用卡忘记还款,逾期了几天,会影响个人信用记录吗?谢谢! 招行晚5天还款会上征信吗? 招行信用卡逾期4天对个人征信有影响吗? 怎么用手机打开优盘 招商信用卡账单日超过了3天还款,会不会上征信! 招行晚还款五天,会不会上征信? 中国名山海拔高度排名 java string乱码问题 中国排名前十的名山有哪些 java中文string 乱码如果不正则直接System.in.read(by)可以往文件写入中文可是我想进行匹配就要经过String c语言string出现乱码 函数返回值为String型时,且返回结果为中文时,得到的结果是乱码,这是怎么回事? 中国名山 排名 android中android:text="@string/请输入"中文乱码怎么办 中国的名山大川排名 读取xml文件获取String字符串为乱码,怎么解决 中国著名的山有哪些? javascript 字符串 String 初级问题 中文乱码 中国有几大名山? nsstring中文有乱码怎么解决? 中国最美的十大名山(最新排名是什么) C++ string输出乱码问题 String[]数组输出乱码? java String.substring 乱码 C++ STRING 中文问题 java中的输出string字符串,是乱码