'’'が '' 'の代わりにページに表示される



Showing Page Instead



解決:

だから問題は何ですか、

それは'(右引用符-U + 2019)UTF-8ではなくCP-1252としてデコードされている文字。エンコーディングテーブルを確認すると、この文字がバイトで構成されたUTF-8にあることがわかります。0xE2、0x80および0x99。 CP-1252コードページのレイアウトを確認すると、これらの各バイトが個々の文字を表していることがわかります。に、€と™。




どうすれば修正できますか?

文字の読み取り、書き込み、保存、および表示には、CP-1252の代わりにUTF-8を使用してください。




両方でContent-TypeをUTF-8に設定していますタグと私のHTTPヘッダー:

  

これは、文字の解釈と表示に使用するエンコーディングをクライアントに指示するだけです。これは、文字の読み取り、書き込み、保存、および表示に使用するエンコーディングを独自のプログラムに指示するものではありません。正確な答えは、使用するサーバー側のプラットフォーム/データベース/プログラミング言語によって異なります。 HTTP応答ヘッダーで設定されたものがHTMLメタタグよりも優先されることに注意してください。 HTMLメタタグは、ページがHTTPからではなくローカルディスクファイルシステムから開かれた場合にのみ使用されます。


さらに、私のブラウザはに設定されていますUnicode(UTF-8):



これは、文字の解釈と表示に使用するエンコーディングをクライアントに強制するだけです。しかし、実際の問題は、あなたがすでに送信しているということです’(UTF-8でエンコード)の代わりにクライアントに’。クライアントは正しく表示されています•UTF-8エンコーディングを使用します。クライアントがISO-8859-1などの使用を誤って指示された場合は、おそらく次のようになります。代わりにââ¬â¢。


データベースでASP.NET2.0を使用しています。

これはおそらくあなたの問題がどこにあるかです。独立したデータベースツールを使用して、データがどのように表示されるかを確認する必要があります。

の場合’文字が表示されている場合は、データベースに正しく接続していません。 UTF-8を使用するようにデータベースコネクタに指示する必要があります。

データベースにが含まれている場合’、それから台無しにされているのはあなたのデータベースです。ほとんどの場合、テーブルは使用するように構成されていませんUTF-8。代わりに、データベースのデフォルトのエンコーディングを使用します。これは構成によって異なります。これが問題である場合は、通常、UTF-8を使用するようにテーブルを変更するだけで十分です。データベースがそれをサポートしていない場合は、テーブルを再作成する必要があります。テーブルを作成するときに、テーブルのエンコーディングを設定することをお勧めします。

SQL Serverを使用している可能性が高いですが、MySQLコード(この記事からコピー)を次に示します。

CREATE DATABASE db_name CHARACTER SET utf8; CREATE TABLE tbl_name(...)CHARACTER SET utf8;

ただし、テーブルがすでにUTF-8である場合は、一歩下がる必要があります。 また そこにデータを置きます。 それは 問題はどこにありますか。 1つの例は、誤ってエンコード/デコードされたHTMLフォーム送信値です。


問題について詳しく知るためのリンクは次のとおりです。

  • 絶対最小すべてのソフトウェア開発者は、私たち自身のJoelから、Unicodeと文字セット(言い訳はありません!)について絶対に、積極的に知っている必要があります。
  • Unicode-文字を正しく取得する方法は?より簡潔で実用的な情報を使用して、ソリューションはJava環境を対象としています。
  • PHP環境を対象としたUTF8を使用するようにPHPサイトをセットアップする方法。

ブラウザとエディタがISO-8859-1 / Windows-1252ではなくUTF-8エンコーディングを使用していることを確認してください。

または使用する'。


私はいくつかの文書を持っています…として表示されていた…とêは次のように表示されていましたê。これがそこに到達した方法です(Pythonコード):

#Adamはwindows-1252を使用して元のファイルを編集しますwindows = ' x85  xea'#これは水平エリプシス、CIRCUMFLEXを使用したラテンスモールレターE#Bethはそれをwindows-1252として正しく読み取り、utf-8 utf8 = windows.decodeとして書き込みます( 'windows-1252')。encode( 'utf-8')print(utf8)#Windows-1252がきらめくutf-8バージョンを書き込むときにチャーリーはそれを*正しく*読みませんtwingled = utf8.decode( 'windows-1252') .encode( 'utf-8')print(twingled)#utf-8として読み取り、windows-1252(実際にはutf-8)として書き込むことでdetwingled detwingled = twingled.decode( 'utf-8')。encode( ' windows-1252 ')utf8 == detwingledをアサートします

この問題を解決するために、私は次のようなPythonコードを使用しました。

with open( 'dirty.html'、 'rb')as f:dt = f.read()ct = dt.decode( 'utf8')。encode( 'windows-1252')with open( 'clean.html' 、 'wb')as g:g.write(ct)

(誰かがきらめきバージョンを正しいUTF-8ドキュメントに挿入したので、実際にはきらめき部分だけを抽出し、それを解きほぐしてから挿入し直す必要がありました。これにはBeautifulSoupを使用しました。)

Webサーバーの構成が間違っているよりも、コンテンツの作成にチャーリーがいる可能性がはるかに高くなります。 utf-8ドキュメントのwindows-1252エンコーディングを選択して、Webブラウザにページを強制的に表示させることもできます。 Webブラウザーは、チャーリーが保存したドキュメントを解読できません。

ノート :同じ問題は、windows-1252の代わりに他のシングルバイトコードページ(たとえば、latin-1)でも発生する可能性があります。