查看: 1332|回复: 4
|
C# 如何取得纯文本文件的原编码?【解】
[复制链接]
|
|
好久没上来,一上来就给各位抛问题,对不起了。
在 .Net 里的 StreamReader 其读取编码模式原设为 UTF8,
就如此,无论纯文本文件(text file)储存为 ASCII 或 Unicode ,它都读为 UTF8 。
虽然可以使用 System.Text.Encoding 来强制读取编码模式,不过前提还是要先知道文本的原编码呀……
苦恼呀……
要怎样才能取得纯文本文件(text file)的原本编码呢?
谢谢
[ 本帖最后由 sson 于 15-3-2006 03:46 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 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);
就解决了小章鱼的问题,呵呵……
麻烦 goatstudio 和 meemee,谢谢。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|