二进制数组转字符串乱码问题

小小宝er 2015-03-10 11:26:58
求大神指点。上传任意文档,将文档转为二进制数组,再将数组转换成字符串,代码如下

int flieLength = FileUpload1.PostedFile.ContentLength;
Stream fs = FileUpload1.PostedFile.InputStream;
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, flieLength);
fs.Close();
char[] Chars = new char[System.Text.Encoding.GetEncoding("utf-8").GetCharCount(bytes, 0, bytes.Length)];
Encoding.GetEncoding("utf-8").GetChars(bytes, 0, bytes.Length, Chars, 0);
String newString = new String(Chars);
Literal1.Text = newString;
//UnicodeEncoding converter = new System.Text.UnicodeEncoding();
//string spcontent = converter.GetString(bytes);
//Response.Write(spcontent);

经过测试,如果上传的文件是编码为UTF-8的文件,newString能正常显示。如果是word或是其他编码的文本文件,就出现乱码,我想还是编码问题,不过不晓得怎么解决了,求指点,感谢
...全文
810 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 5 楼 MS_CSDN 的回复:
顺带说一句,我上传了一个word,其中有段确实翻译过来了,全是正常的中文,但大部分是乱码,不知道何解
文档类型,不仅仅是word,可能是ppt,pdf,excel,等等。这个过程希望是程序完成
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
不是啥玩意都能按字符串显示的 我随便给你个exe,你给我显示成字符串试试看? 不同的文件格式 ,你要按对应的方式读取解析,可以利用第三方插件 比如读取word,你可以使用office.word.dll解析
嗯。是的。换个思路试试,如果有好的思路,希望进一步指点,谢谢
於黾 2015-03-10
  • 打赏
  • 举报
回复
不是啥玩意都能按字符串显示的 我随便给你个exe,你给我显示成字符串试试看? 不同的文件格式 ,你要按对应的方式读取解析,可以利用第三方插件 比如读取word,你可以使用office.word.dll解析
feiyun0112 2015-03-10
  • 打赏
  • 举报
回复
用工具先把word转为html
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
顺带说一句,我上传了一个word,其中有段确实翻译过来了,全是正常的中文,但大部分是乱码,不知道何解
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
word你肯定不能这么干,word有自己的格式,对于其他编码,要么知道是何种编码,你对应着解析,要么就改为一种通用格式,比如xml,json等
我不确定word,是否能这么干,所以去试了下,呵呵,目前来说确实不行,不知道是方法不对,还是确实不存在这样的思路,所以请教各位,曾经在某个地方看到NODE.JS似乎能实现我要的结果。。不知道百度文库是不是用了NODE.JS
bdmh 2015-03-10
  • 打赏
  • 举报
回复
word你肯定不能这么干,word有自己的格式,对于其他编码,要么知道是何种编码,你对应着解析,要么就改为一种通用格式,比如xml,json等
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
word是特殊格式的二进制文件,不是纯文本文件,不能直接显示。就像你不装office就打不开word
嗯,也想到这个问题,其实我是想做百度文库的效果,百度文库以前用了flash加载,但现在不是,用html分析工具看了下,感觉是将文档内容,包含格式转换成了对应的html代码,感觉数据是JSON格式,所以我朝这个方向想了,不知道您是否有好的实现思路,请指点
feiyun0112 2015-03-10
  • 打赏
  • 举报
回复
word是特殊格式的二进制文件,不是纯文本文件,不能直接显示。就像你不装office就打不开word
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 14 楼 wyd1520 的回复:
你想取文本,那用Aspose.Word取吧
额,谢谢,看看吧。。这个或取出来是纯文本?样式是否保持原样?
本拉灯 2015-03-10
  • 打赏
  • 举报
回复
你想取文本,那用Aspose.Word取吧
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
不管是什么文件,最终存在硬盘上的都是二进制数据 如果一个文件里有文字,有图片,有样式(段落,字体,颜色等),而其中的文字是跟文本文档编码形式一致的 那么你把整个二进制文件都当字符串解析的时候,文字部分是有可能成功解析的(当然也有可能错位变成乱码),而其他部分则必然是乱码
你好,谢谢的参考,转换为pdf后,在浏览器上如何显示?我知道Jquery 有一个相应插件。。但效果并不是很好
小小宝er 2015-03-10
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
不管是什么文件,最终存在硬盘上的都是二进制数据 如果一个文件里有文字,有图片,有样式(段落,字体,颜色等),而其中的文字是跟文本文档编码形式一致的 那么你把整个二进制文件都当字符串解析的时候,文字部分是有可能成功解析的(当然也有可能错位变成乱码),而其他部分则必然是乱码
额。了解
insus 2015-03-10
  • 打赏
  • 举报
回复
於黾 2015-03-10
  • 打赏
  • 举报
回复
不管是什么文件,最终存在硬盘上的都是二进制数据 如果一个文件里有文字,有图片,有样式(段落,字体,颜色等),而其中的文字是跟文本文档编码形式一致的 那么你把整个二进制文件都当字符串解析的时候,文字部分是有可能成功解析的(当然也有可能错位变成乱码),而其他部分则必然是乱码

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧