导航:首页 > 编程语言 > javabytestring乱码

javabytestring乱码

发布时间:2022-04-21 02:06:05

① byte[]转string乱码 java

图片等二进制数据是不能直接对应成任何字符编码的字符串。

如果非要用字符串可以转成base64或hex。

Stringt=javax.xml.bind.DatatypeConverter.printBase64Binary(byte_array);

② java中文string 乱码如果不正则直接System.in.read(by)可以往文件写入中文可是我想进行匹配就要经过String

这里肯定会出乱码的,必需将得到的字节码再次进行编码,一般是16进制编码。
如:
byte []bytes=md5.digest(user.getPassword().getBytes("utf8"));
StringBuilder ret=new StringBuilder(bytes.length<<1);
for(int i=0;i<bytes.length;i++){
ret.append(Character.forDigit((bytes[i]>>4)&0xf,16));
ret.append(Character.forDigit(bytes[i]&0xf,16));
}
user.setPassword(ret.toString());

③ java new String(byte[],UTF-8)编码问题

Windows的记事本编码用的是系统内码。
而简体Windows默认编码就是GBK,所以你肯定要用GBK来解码啊。

要不然你就不要自己用byte[]来读取,而是用BufferedReader来readLine()就好了。

或者你可以试着获取系统默认编码。

④ java String.substring 乱码

因为你的源是GBK编码,储存到String后没有指定编码,所以是按java默认编码存入的。整个输出时没有问题,但是使用substring方法去截取一段的时候,编码不同自然就乱码了。
你可以使用String类的构造函数String(byte[] bytes, String charsetName) 来指定编码。
str = new String(s.getBytes(),"GBK");
再subString应该就没问题了。

⑤ java中字符乱码转化的问题

如果B接受编码方式也不能更改为和A一致,那么举个例子
A GBK,B UTF-8
B获取的内容乱码,
String s=request.getParameter("字段名");
这里s会乱码,可以做如下转换
byte[] bytes=s.getBytes(" B当前的编码格式");
String s=new String(bytes,"A的编码方式");
这个时候s就正常了

⑥ JAVA,字符串输出乱码。。

如果这个文件内容只是一些文本信息,不是类图片等的二进制数据,不要使用这种方式读写,应该用BufferedReader和FileReader,可指定文本的编码方式,因为文本中的一个字符可能由1字节、或2字节或更多字节组成(由编码方式不同而不同)。你以字节方式读取可能打断一个完整的字符。
另你的由字节数组转为字符串可使用new String,并指定编码方式(如utf-8,unicode等)

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

上面三行代码表示:分别返回“中”这个汉字在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[ ]数组才能正确被还原。

(7)javabytestring乱码扩展阅读

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))才是解码的过程。

⑧ java 字符串字符串乱码问题

应该是编码格式的问题吧
//ISO编码转为GBK编码
public static String ISOtoGBK(String s) {
String str = "";
try {
if (s == null || s == "" || s.equals("")) {
str = s;
} else {
str = new String(s.getBytes("ISO8859-1"),"GBK");
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}

⑨ java字节数组转换中文乱码,请求帮助

String str = new String(test,"UTF-16");
System.out.println(str);
打印结果:???流量已使用1000.00MB,剩余0.00MB;(均不含半年包、定向流量包)。超出流量0.00MB,超出流量(不含港澳台)按照约定资费

⑩ java 输出byte[]出现乱码

byte[] ba数组可以理解成是byte的类,ba的是个对象,10,50可以看出对象的二个成员变量,你要调用对象的某个成员变量,有对应的方法,那么要访问数组里面的数据就要要用ba[i]这个方法才可以调用。ba在栈里面存放的是hashcode码,这个码可以在堆内存里面找到一块空间,里面存放这10和50这2个数,System.out.println(ba);这个句子只能输出ba里面存的hashcode码,所以你只能得到[B@18a992f这个码。

阅读全文

与javabytestring乱码相关的资料

热点内容
设计道pdf 浏览:615
单片机kill4软件下载收费吗 浏览:846
苹果手机怎么连接RMS服务器 浏览:603
cisco路由器基本配置命令 浏览:186
android状态栏颜色透明 浏览:116
db2编译工具 浏览:181
腾讯云服务器创建环境 浏览:567
监管资金怎么解压 浏览:671
荣耀手机内存清理文件夹 浏览:175
外派程序员方案 浏览:554
安卓怎么把桌面的软件变成卡通 浏览:885
鲁班锁解压吗 浏览:395
打包发送文件如何加密 浏览:213
centos解压缩zip 浏览:388
我的世界怎么用命令风块取消指令 浏览:1000
安卓软件请求超时怎么办 浏览:476
androidapp调用另一个app 浏览:621
数控铣床法兰克子程序编程 浏览:174
linux打包命令targz 浏览:997
抖音app是哪个 浏览:407