关于各种语言编码(GBK,euc-kr,UTF-7...)转UTF-8的问题.望指教,谢谢

ZhaoYiran 2005-10-06 10:47:14
做项目时遇到一个麻烦事情.由于客户提交上来的文本文件可能是采用各种各样的编码,比如:台湾用户用BIG5,大陆用GB2312,韩国用户euc-kr,小日本用户Shift-JIS.

在处理用户提交上来的文件时,就需要将这些不同编码的文件中的内容转为UTF-8(没办法,天天在吼全球化).于是就遇到难题了,System.Text只有UTF-8,Unicode,UTF-7,UTF-32,ASCII的解码类.没了内置的支持,解码一些文件很变得困难了,至少对于我来讲是困难的.

偶然想到一个笨办法(牛刀杀蚂蚁),还仅适用于页面类(VB.NET):

me.Session.CodePage = 936'这个数字根据客户选用的语言来得,比如如果用户是韩国人,这个值可能是51949
dim s as string = Me.Response.ContentEncoding.GetChars(_ByteArray)'_ByteArray是一个包含用户上传文本文件内容的Byte数组
me.Session.CodePage = 65001'重新把页面使用的语言类型转为UTF-8

这个局限性太大...性能也不会好.或许我可以写个类专门包含各种语言解码类(System.Text.Decoder).并在项目启动时初始化它们.但这可能需要占去一个可观的内存...不太划算.

抓了一早上头发..实再想不出其它办法.望各位高手指教,谢谢.100分
...全文
544 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghchen 2005-10-07
  • 打赏
  • 举报
回复
转码的工具
ghchen 2005-10-07
  • 打赏
  • 举报
回复
找一个转换的工具看看
ZhaoYiran 2005-10-07
  • 打赏
  • 举报
回复
我解决了,呵呵.唉..不细心....NET是内置支持的...根据CODEPAGE能够得到System.Text.Decoder

可惜不能给自己加分.呵呵

那就每人分点吧
ZhaoYiran 2005-10-07
  • 打赏
  • 举报
回复
这个不能用转码工具吧...我这是在程序里边工作的...而且是读字节流...需要根据System.Text.Decoder来读字节流...所以...不可能用到工具.
ZhaoYiran 2005-10-06
  • 打赏
  • 举报
回复
做几个版本?你是说的我讲的第二种方法吧...做个Shared类..包含各种语言的System.Text.Decoder?
这个太占内存了.而且这个只在WEB系统中有交...因初始化的代码要借助PAGE类的方法和属性...如果换到WINDOWS环境就用不了了.

请高手指教更好的方法,谢谢
ZhaoYiran 2005-10-06
  • 打赏
  • 举报
回复
100分哇...没人答?
sxBamboo 2005-10-06
  • 打赏
  • 举报
回复
做几个版本吧!

62,046

社区成员

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

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

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

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