我們有一個使用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