【发布时间】:2016-08-10 01:58:32
【问题描述】:
我在 C# 中使用WebClient.DownloadFile 来下载网页。它们下载得很好,但编码通常不明确(不存在 BOM)。 Mozilla 通用字符集检测器(port 1、port 2)提供了一个使用启发式检测纯文本文件编码的系统,this 提供了一种更简单的方法,可以识别更少的编码。
首先,HTML 网页是否甚至使用 Shift-JIS 和 EUC-KR 等奇怪的编码进行编码?如果不是,那么可以使用更快的检测方法,假设某些东西是 ASCII/ANSI 或 UTF8。
其次,即使在检测到编码之后,如何将文件的byte[] 解码为适当的 UTF8 字符串?在进行一些字符串处理之后,我可以使用 UTF8 BOM 将文件保存回磁盘吗?或者我是否也必须在 HTML 文件中添加额外的标签,如 <meta charset="utf-8"..">?
【问题讨论】:
-
我遇到了同样的问题。声明的编码有时是完全错误的(更不用说在网页的文本中声明了,需要先解码w3schools.com/tags/att_meta_charset.asp),BOM 几乎总是丢失。我认为启发式是唯一合理的解决方案。
标签: c# encoding utf-8 character-encoding webpage