’
の代わりに が私のページに表示されています'
。
タグと HTTP ヘッダーの両方に次のようにContent-Type
設定しています。UTF-8
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
さらに、私のブラウザは次のように設定されていUnicode (UTF-8)
ます。
では、何が問題で、どうすれば修正できますか?
ブラウザーとエディターが ISO-8859-1/Windows-1252 ではなく UTF-8 エンコードを使用していることを確認してください。
または使用します’
。
これは、文字列がWindows-1252 から UTF-8 に2 回変換された場合に発生することがあります。
おそらく MySQL 接続が正しい文字セットを指定していないために、Zend/PHP/MySQL アプリケーションでそのような文字がデータベースに表示されていました。次のことを行う必要がありました。
Zend と PHP がデータベースと UTF-8 で通信していることを確認します (デフォルトではありませんでした)。
このようないくつかの SQL クエリで壊れた文字を修復します...
UPDATE MyTable SET
MyField1 = CONVERT(CAST(CONVERT(MyField1 USING latin1) AS BINARY) USING utf8),
MyField2 = CONVERT(CAST(CONVERT(MyField2 USING latin1) AS BINARY) USING utf8);
必要な数のテーブル/列に対してこれを行います。
必要に応じて、これらの文字列の一部を PHP で修正することもできます。文字が2 回エンコードされているため、実際には UTF-8からWindows-1252 に逆変換する必要があり、最初は戸惑いました。
mb_convert_encoding('’', 'Windows-1252', 'UTF-8'); // returns ’
文字エンコーディングが一致していません。あなたの文字列はあるエンコーディング(UTF-8)でエンコードされており、このページを解釈しているものは別のものを使用しています(ASCIIなど)。
常に http ヘッダーでエンコーディングを指定し、これがフレームワークのエンコーディングの定義と一致していることを確認してください。
http ヘッダーの例:
Content-Type text/html; charset=utf-8
<configuration>
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
コンテンツ タイプが既に UTF8 である場合、データが既に間違ったエンコーディングで到着している可能性があります。データベースからデータを取得する場合は、データベース接続で UTF-8 が使用されていることを確認してください。
これがファイルからのデータである場合は、ファイルが UTF-8 として正しくエンコードされていることを確認してください。通常、これは、選択したエディターの [名前を付けて保存...] ダイアログで設定できます。
ソース ファイルで表示したときにデータが既に破損している場合は、以前は UTF-8 ファイルでしたが、途中で間違ったエンコーディングで保存された可能性があります。
WordPress Web サイトでこのエラーが発生した場合は、wp-config db charset を変更する必要があります。
define('DB_CHARSET', 'utf8mb4_unicode_ci');
それ以外の:
define('DB_CHARSET', 'utf8mb4');
Word ドキュメントからテキストをコピーして貼り付ける必要があります。Word 文書はスマート クォートを使用します。これを特殊文字 (’) に置き換えるか、HTML エディター (') に入力するだけです。
これで問題が解決すると確信しています。