1

以前の私のWebページでは、文字セットUTF-8が使用されていましたが、この文字セットを使用してSQL Server 2008データベースに多くのコンテンツを挿入しました。UTF-8のデータベースコンテンツですが、ISO-8859-1のWebページに表示されます

私のウェブページは、ISO-8859-1の文字セットを使用しています。しかし、それはまだデータベースから同じ内容を使用しています。今私の問題は、データベースの内容が古い文字セットであることです。

データベースのすべてを1つのcharsetから別のcharsetに変換する方法はありますか?すべて1つ、または接続文字列を使用していますか?

+0

私は、** utf-8 **から** ISOエンコーディングに切り替える理由が不思議ですか?通常、それは逆です。 Utf-8は、ISOができるすべてのUnicodeコードポイントを表すことができます。世界はISOや他のAnsiからUnicodeをエンコードして受け入れる方向に向かっています。 –

+0

私はどちらが行くかは実際問題ではありません。私はちょうどこれを行う方法があるかどうかを知る必要があります... – Behrens

+1

'char/varchar/text'カラムにあなたのUTF-8データを格納したと仮定すると、UTF-8照合を使ってUnicodeとしてデータを読み込まなければなりません適切な変換を可能にする。その場合、ASPコードを更新して、UnicodeデータをISOに変換してからクライアントに送信する必要があります。したがって、ISOに切り替えるのは意味がありません。データはUTF-8なので、UTF-8としてクライアントに送信してください。将来、外国語の問題を避けるために、データベースに 'nchar/nvarchar'を使用するように設計してください。 –

答えて

1

まずは、データベースの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静的コンテンツがクライアントによって正しく受け付けられなくなります。

+0

' nvarchar/ntext'を使用しませんでした。今やる。 - 私は 'response.codepage'と' response.charset'をpudしていませんでした。私は今やってこれですべてを解決! :)あなたの助けをもう一度ありがとうアンソニー。いつものように私はたくさんのことを学んでいます:) – Behrens

関連する問題