我们有一个使用ISO-8859-1字符集的web应用程序。 Occationaly用户有'奇怪'的名字,其中包含Š(这里为了方便起见编码)的字符。 我们将此存储在我们的数据库中,但是我们无法正确显示。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);
}
}
是的,这有效,但我相信我们运行ISO-8859-1的原因。尽管如此,我希望不会,但我会检查那些应该知道的人。在我们所有的服务器上改变字符集是一项风险很大的操作,尽管我想这样做,而不是编写一个不适合的解决方法。 – Polymorphix 2010-12-15 16:08:03
只要你已经在7位ASCII范围之外使用HTML实体作为“特殊字符”,它就没有风险。 ISO-8859-1和UTF-8具有完全相同的ASCII字符的字节表示形式。 – BalusC 2010-12-15 16:19:16