我们有一个使用 ISO-8859-1 字符集的网络应用程序。有时,用户会使用包含 Š 等字符的“奇怪”名称(为方便起见,此处编码为 html)。 我们将其存储在我们的数据库中,但是 我们无法正确显示它。
处理此问题的最佳方法是什么?我在想我应该使用其 HTML 实体编号编码( Š 到 Š
)自动转换字符集之外的字符
但我在寻找如何自动执行此操作时遇到了问题(不使用包含所有值的表格)。
此代码适用于扩展的 ASCII 字符,如“å”(存在于 ISO-8859-1 中)。我想对其他角色做同样的事情。我可以使用这些 HTML 实体编码值中的模式吗?
unsigned int c;
for( int i=0; i < html.GetLength(); i++)
{
c = html[i];
if( c > 255 || c < 0 )
{
CString orig = CString(html[i]);
CString encoded = "&#";
encoded += CTool::String((byte)c);
encoded += ";";
html.Replace(orig, encoded);
}
}
最佳答案
网页应指示浏览器以 UTF-8 格式显示响应。这通常通过在 Content-Type
响应 header 中提供字符集来实现,例如 text/html;charset=UTF-8
。
Response.AppendHeader("Content-Type", "text/html;charset=UTF-8");
只有 HTML/XML 实体存在,以便您能够以 UTF-8 以外的编码保存网页源。
关于.net - 不在字符集中的 HTML 编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4450934/