社区
WPF/Silverlight
帖子详情
怎样将Byte[]转换成字符串
海涵德
2012-06-04 09:13:58
有人给出的办法在silverlight中无效,还有什么办法?
...全文
658
16
打赏
收藏
怎样将Byte[]转换成字符串
有人给出的办法在silverlight中无效,还有什么办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yn_jiang
2014-07-24
打赏
举报
回复
海涵德
2012-06-21
打赏
举报
回复
至今还没有解决。
火雲邪神
2012-06-15
打赏
举报
回复
.tostring()
E次奥
2012-06-15
打赏
举报
回复
我不信文件流都解决不了你的问题!
海涵德
2012-06-15
打赏
举报
回复
确实没有人给出解决办法,多是纸上谈兵或者用WinForm中的代码蒙事,在silverlight里确实还没有解决办法,我不需要想法,我只要代码,要用代码说话。
海涵德
2012-06-13
打赏
举报
回复
楼上的代码在silverlight中调试过吗?
这种方法我已经试用过了,结果是一样的。
我调试的代码如下:
FileStream fs = fileinfo.OpenRead();
// StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("utf-8"), true);
string s="";
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
s = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
fs.Close();
//Encoding fileEncoding = TxtFileEncoding.GetEncoding(fs, Encoding.GetEncoding("utf-8"));//取得这txt文件的编码
//Console.WriteLine("这个文本文件的编码为:" + fileEncoding.EncodingName);
// fs.Read(line, 0, line.Length);
// s = Encoding.GetEncoding("system").GetString(line, 0, line.Length);//gb2312
// s = Encoding.UTF8.GetString(line, 0, line.Length);
// s = Encoding.Unicode.GetString(line, 0, line.Length);
注释中是调试过的方法,都没有解决问题。
Fan_zhigao
2012-06-13
打赏
举报
回复
{
string fileContents = string.Empty;
//读取文件字节流(不能用OpenText,否则默认以UTF-8方式读取)
using(FileStream textStream = ofdUpFile.File.OpenRead())
{
//创建字节流数组
byte[] bytes = new byte[textStream.Length];
//读取相关数据
textStream.Read(bytes, 0, Convert.ToInt32(textStream.Length));
fileContents = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
海涵德
2012-06-06
打赏
举报
回复
private void do_file_readtext(string file_name)
{
string line;
byte[] bytes;
FileInfo fi = new FileInfo(file_name);
bytes = new byte[fi.Length];
Stream s = fi.OpenRead();
s.Read(bytes ,0,(int )fi.Length );
string line1 = System.Text.Encoding.GetEncoding(936).GetString(bytes);
s.Seek( 0, SeekOrigin.Begin);
string line2 = System.Text.Encoding.GetEncoding("gb2312").GetString(bytes);
s.Seek(0, SeekOrigin.Begin);
string line3 = System.Text.Encoding.Default.GetString(bytes);
//line = System.Text.Encoding.Unicode.GetString(bytes);
s.Close();
StreamReader sr = fi.OpenText();
line = sr.ReadLine();
sr.Close();
}
上面这段代码在Winform下调是都没有问题,只是下面这一段的OpenText()是非要用utf8编码读取文件得到的
line就乱码。
StreamReader sr = fi.OpenText();
line = sr.ReadLine();
sr.Close();
能否改变OpenText()的编码?,只要改成default就可以。
海涵德
2012-06-06
打赏
举报
回复
我发现utf8转换字符串是把汉字都转换成了65535,感觉他识别不了就用16位最大整数代替了。
海涵德
2012-06-06
打赏
举报
回复
我不是自己Encoding,而是读取一个其他文件中的汉字,经过Encoding.utf8后发现汉字转换为字节时的值都是65535,所以
代码这样写的:
streamread s=fi.opentext();
string line0=s.readline();
//
// 此时 line0 读过来,已经乱码,所以我想这么做
//
byte[] bs=system.text.encoding("utf-8").getbytes(line0);
// bs中的汉字值都为最大整数65535
string line1=system.text.encoding("utf-8").getstring(bs);
如果这样写代码:
stream s=fi.openread();
byte[] bs=new byte[fi.length];
s.read(bs,0,fi.length);
//
// 此时可以看到bs中汉字编码值还是正确的,每两个字节都是大于128小于65535的值,应该是原编码
//
string line1=system.text.encoding("utf-8").getstring(bs);
line1 是乱码的。
我发现utf8转换字符串是把汉字都转换成了65535,感觉他是别不了就用16位整数代替了。
以上为了简介忽略了大小写,估计诸位能够看明白。
以专业开发人员为伍
2012-06-05
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
Encoding.Default
Encoding.ASCII
等在silverlight中都不存在,只有
Encoding.UTF8
Encoding.Unicode
[/Quote]
至少后两种对于我来说够用了。
如果你需要编码,可以自己写。找个关于编码的文档,看看各种编码byte[]对char的转换规则是什么,处理起来还是不难。
幸福小6
2012-06-05
打赏
举报
回复
有试过Encoding.Default.GetString( byte[] byte )吗?
海涵德
2012-06-05
打赏
举报
回复
Encoding.Default
Encoding.ASCII
等在silverlight中都不存在,只有
Encoding.UTF8
Encoding.Unicode
海涵德
2012-06-05
打赏
举报
回复
在早期的代码可以直接使用ascii转换双字节汉字编码,有了unicode后反倒更纠结。
海涵德
2012-06-05
打赏
举报
回复
没用。
jv9
2012-06-05
打赏
举报
回复
你试过强制类型转换了么?应该可以强制转换成String类型。
C#中如何将
字符串
转换成
byte
[],如何将
byte
[]
转换成
字符串
?
本文介绍了如何在C#中实现
字符串
与
byte
数组之间的转换,包括使用System.Text.Encoding.ASCII类进行编码和解码的方法。
VC二进制
byte
数组
转换成
对应
字符串
本文介绍了两个实用的函数:str_to_hex用于将
字符串
转换为十六进制,hex_to_str则实现从十六进制到
字符串
的转换。此外还提供了
byte
数组与十六进制
字符串
相互转换的方法。
包含汉字的
字符串
转换成
字节数组
byte
[],出现负数的解决方法
博客聚焦于包含汉字的
字符串
转换成
字节数组
byte
[] 时出现负数的情况,探讨了解决方法,涉及 Java 开发语言及相关算法,为开发过程中遇到此类问题提供了思路和解决方案。
在VB中把
字符串
转换成
Byte
数组
博客介绍了使用strConv函数在
字符串
和数组间进行转换的方法。通过示例代码展示了如何将
字符串
转成数组,以及将数组转成
字符串
。还提到strConv功能强大,更多信息可参考MSDN Library文档。
将
byte
数组
转换成
字符串
文章介绍了如何将给定的字节数组转换为易于查看的十六进制
字符串
,以便于在分析通讯协议中的指令。通过
byte
ToHexStr函数实现,展示了将字节序列转化为便于理解的形式。
WPF/Silverlight
8,757
社区成员
12,031
社区内容
发帖
与我相关
我的任务
WPF/Silverlight
WPF/Silverlight相关讨论
复制链接
扫一扫
分享
社区描述
WPF/Silverlight相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章