关于字节数组转字符串乱码的问题

时间:2022-12-22 22:44:55
我的字节数组 部分乱码  正确的是前几个 值为  214  184 182    之后为0的  应该就是乱码    我用的Encoding.Defalut.GetString      怎么解决   我打算去除为0的字节数组部分  代码怎么写  或者别的方式解决这个问题

9 个解决方案

#1


按这个数组是按什么编码方式来的,不要用default,解码和编码不一致就会乱码

#2


我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

#3


引用 2 楼 csdnIamhere 的回复:
我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

和末尾0没有关系,你去了该乱码还是乱码

#4


引用 3 楼 xdashewan 的回复:
Quote: 引用 2 楼 csdnIamhere 的回复:

我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

和末尾0没有关系,你去了该乱码还是乱码


我的意思 是字节数组值为0  就是乱码   那我这个乱码不是因为这个关系呀?

#5


引用 4 楼 csdnIamhere 的回复:
我的意思 是字节数组值为0  就是乱码   那我这个乱码不是因为这个关系呀?

你可以定义一个字节数组看看默认值是什么,转字符串得知道编码,除非只有基础英文数字等

#6


byte[] { 214, 184, 182, 0 }    
前两个( 214, 184)构成 gbk 的  指
但前三个(214, 184, 182)并不能构成 utf-8 字符

所以你用 Encoding.Defalut.GetString 处理并无问题

你最好给出原始的数据
还应检查 0 值是如何得来的

#7


引用 6 楼 xuzuning 的回复:
byte[] { 214, 184, 182, 0 }    
前两个( 214, 184)构成 gbk 的  指
但前三个(214, 184, 182)并不能构成 utf-8 字符

所以你用 Encoding.Defalut.GetString 处理并无问题

你最好给出原始的数据
还应检查 0 值是如何得来的


这的回复是真的很赞。 一会结贴 给你多分。   原始数组在台式机上, 500的数组长度  , 现在的问题就是 正确的提示之后 跟着一大堆乱码

#8


字节0就是字符'\0'是字符串结尾的标志,后面的不用管了。Encoding.GetCharCount (Byte[]) 获取字符串长度参数。然后试试。

#9


为0也可能跟宽字节(w_char)补零有关,试下Encoding.Unicode.GetString()

#1


按这个数组是按什么编码方式来的,不要用default,解码和编码不一致就会乱码

#2


我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

#3


引用 2 楼 csdnIamhere 的回复:
我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

和末尾0没有关系,你去了该乱码还是乱码

#4


引用 3 楼 xdashewan 的回复:
Quote: 引用 2 楼 csdnIamhere 的回复:

我是读取别人 C++ 接口  返回的字节数组   那我应该咋写啊    我现在想把这个字节数组为0的 全去除  不会写

和末尾0没有关系,你去了该乱码还是乱码


我的意思 是字节数组值为0  就是乱码   那我这个乱码不是因为这个关系呀?

#5


引用 4 楼 csdnIamhere 的回复:
我的意思 是字节数组值为0  就是乱码   那我这个乱码不是因为这个关系呀?

你可以定义一个字节数组看看默认值是什么,转字符串得知道编码,除非只有基础英文数字等

#6


byte[] { 214, 184, 182, 0 }    
前两个( 214, 184)构成 gbk 的  指
但前三个(214, 184, 182)并不能构成 utf-8 字符

所以你用 Encoding.Defalut.GetString 处理并无问题

你最好给出原始的数据
还应检查 0 值是如何得来的

#7


引用 6 楼 xuzuning 的回复:
byte[] { 214, 184, 182, 0 }    
前两个( 214, 184)构成 gbk 的  指
但前三个(214, 184, 182)并不能构成 utf-8 字符

所以你用 Encoding.Defalut.GetString 处理并无问题

你最好给出原始的数据
还应检查 0 值是如何得来的


这的回复是真的很赞。 一会结贴 给你多分。   原始数组在台式机上, 500的数组长度  , 现在的问题就是 正确的提示之后 跟着一大堆乱码

#8


字节0就是字符'\0'是字符串结尾的标志,后面的不用管了。Encoding.GetCharCount (Byte[]) 获取字符串长度参数。然后试试。

#9


为0也可能跟宽字节(w_char)补零有关,试下Encoding.Unicode.GetString()