佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1331|回复: 4

C# 如何取得纯文本文件的原编码?【解】

[复制链接]
发表于 14-3-2006 10:24 AM | 显示全部楼层 |阅读模式

好久没上来,一上来就给各位抛问题,对不起了。


在 .Net 里的 StreamReader 其读取编码模式原设为 UTF8,
就如此,无论纯文本文件(text file)储存为 ASCII 或 Unicode ,它都读为 UTF8 。
虽然可以使用 System.Text.Encoding 来强制读取编码模式,不过前提还是要先知道文本的原编码呀……

苦恼呀……

要怎样才能取得纯文本文件(text file)的原本编码呢?

谢谢

[ 本帖最后由 sson 于 15-3-2006 03:46 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 14-3-2006 04:26 PM | 显示全部楼层
虽然不是很明白你问的问题,不过我想你应该是想要如何辩认文本的格式,是unicode,ANSI还是utf-8。

如果是unicode/utf的话,文件的头部有byte-order mark。根据msdn的资料,streamreader会直接辨认byte-order mark,所以会自动选择编码。

UTF-8:EF BB BF,3bytes
UTF-16/UCS-2, little endian:FE FF,2bytes (unicode)
UTF-16/UCS-2, big endian:FF FE,2bytes (unicode)
回复

使用道具 举报

 楼主| 发表于 14-3-2006 10:56 PM | 显示全部楼层

meemee 谢谢你,
小章鱼也试过了
StreamReader myReader = new StreamReader(myFilePath, true);
那个 true 就是识别 BOM 可是 StreamReader 依旧使用 UTF8
回复

使用道具 举报

发表于 15-3-2006 09:57 AM | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 15-3-2006 03:45 PM | 显示全部楼层

goatstudio 谢谢你,小章鱼在网上搜索是也找到这个,只是觉得很麻烦。
再说 StreamReader 既然有了 detectBOMbyte 就应该没有问题了,估计 MS 不会犯这种小错误。
细看了 MSDN 文档后,发现原来 detectBOMbyte 只识别 UTF8 UTF16 Unicode UnicodeB 罢了
在无法不识别时就以 UTF8 为准。

StreamReader myReader = new StreamReader(myFilePath, Encoding.ACSII, true);
就解决了小章鱼的问题,呵呵……
麻烦 goatstudiomeemee,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 13-11-2024 06:05 PM , Processed in 0.385707 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表