まずは、データベースのNVARCHARまたはNTEXTフィールドを使用している可能性があります。したがって、フィールドの内容はUnicodeとしてエンコードされます。
UTF-8エンコーディングと受信ページを使用して投稿されたオリジナルの投稿フォームは、受信した文字列が忠実にデータベースに格納されるように、Response.Codepageが65001に設定されていると仮定するとよいでしょう。
新しい文字セットを使用してクライアントにコンテンツを送信する場合は、ページコードページを正しく設定するだけです.IIS-8869-1ではコードページ1252を使用しています。コードページを設定してResponse.Write
を使用して送信されたデータは1252に変換され、ネイティブのUnicodeから1252のコードページに変換されます。
しかし、データベースに破損したデータが格納されていることもあり得ますが、HTMLではすべて問題なく表示されます。私の答えhereの詳細については、古い質問と同じです。同じ回答には、DB内のデータを修復するための手順が含まれています。その設定後、出力コードページで十分です。
ASPファイル自体は、UTF-8ではなくWindows-1252として保存する必要があります。そうしないと、ファイル内のASCII静的コンテンツがクライアントによって正しく受け付けられなくなります。
私は、** utf-8 **から** ISOエンコーディングに切り替える理由が不思議ですか?通常、それは逆です。 Utf-8は、ISOができるすべてのUnicodeコードポイントを表すことができます。世界はISOや他のAnsiからUnicodeをエンコードして受け入れる方向に向かっています。 –
私はどちらが行くかは実際問題ではありません。私はちょうどこれを行う方法があるかどうかを知る必要があります... – Behrens
'char/varchar/text'カラムにあなたのUTF-8データを格納したと仮定すると、UTF-8照合を使ってUnicodeとしてデータを読み込まなければなりません適切な変換を可能にする。その場合、ASPコードを更新して、UnicodeデータをISOに変換してからクライアントに送信する必要があります。したがって、ISOに切り替えるのは意味がありません。データはUTF-8なので、UTF-8としてクライアントに送信してください。将来、外国語の問題を避けるために、データベースに 'nchar/nvarchar'を使用するように設計してください。 –