ISO-8859-1文字セットを使用するWebアプリケーションがあります。 Occationalyユーザーは、Š(あなたの便宜のためにここにエンコードされたhtml)のような文字を含む「奇妙な」名前を持っています。 これをデータベースに保存しますが、は正しく表示されません。HTMLエンコーディング文字が文字セットに含まれていません
これを処理する最善の方法は何ですか?私は、HTMLエンティティ番号エンコーディング(Š〜Š
)で文字セット外の文字を自動的に変換する必要があると思っています
しかし、私はどのようにこれを自動的に行うか。
このコードは、 'å'(ISO-8859-1にあります)のような拡張ASCII文字で使用できます。他のキャラクターと同じことをしたいと思います。これらの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
すでに7ビットのASCII範囲外の「特殊文字」にHTMLエンティティを使用していれば、それは危険ではありません。 ISO-8859-1とUTF-8は、ASCII文字のバイト表現とまったく同じです。 – BalusC