テキスト内に疑問符が表示されるのはなぜですか?
-
04-07-2019 - |
質問
ファイルとデータベースの両方のライブサイトを自動的にバックアップするバックアップサーバーがあります。
ライブサイトでは、テキストは正常に見えますが、ミラー化されたバージョンを表示すると、「?」が表示されます。一部のテキスト内。このテキストはニュースデータベーステーブル内に保存されます。
これは、ライブサーバー上とミラーサーバー上のスクリーンショットです。
ミラー化されたサーバーにバックアップするプロセスで何が起こるでしょうか?
解決
次の記事が役立ちます
http://dev.mysql.com/doc/ refman / 5.0 / en / charset-syntax.html
http://dev.mysql.com/doc/ refman / 5.0 / en / charset-connection.html
データベースに接続した後、次のコマンドを発行します。
名前の設定 'utf8';
WebページもUTF-8エンコーディングを使用していることを確認してください:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
PHPは、変換に役立ついくつかの関数も提供します。
他のヒント
<!> quot; mirror <!> quot;でApache構成ファイルを編集します。サーバー(問題のあるサーバー)、次の行をコメントアウトします。
AddDefaultCharset UTF-8
次にApacheを再起動します:
service httpd restart
問題は、<!> quot; AddDefaultCharset UTF-8 <!> quot;行は、.htmlファイルで指定されたContent-Typeをオーバーライドします。例:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
最も一般的な症状は、127を超える文字コードが疑問符付きの黒い菱形(Chrome、SafariまたはFirefox)、または小さなボックス(IEおよびOpera)として表示されることです。通常、Microsoft Wordで生成されたHTMLファイルには多くのそのような文字があり、最も一般的なものは文字コード160 = 0xA0です。これは<!> quot; <!> amp; nbsp; <!> quot;と同等です。 Windows-1252エンコーディングで、次のようにspanタグの間によく見られます:
<span style="mso-spacerun: yes">ááá </span>
ここでは、ブラウザに表示されるJavaScriptのソリューションを探しましたが、データベースとは直接関係していませんでした...
私の場合、インターネットで見つけたテキストをJavaScriptファイルにコピーして貼り付け、Windowsのメモ帳で保存しました。
そのJavaScriptファイルを使用するページが文字列を出力したとき、アクセント付き文字などの特殊文字の代わりに疑問符(質問に表示されているもののような)がありました。
Notepad++
を使用してファイルを開きました。ファイルを開いた直後に、次のスクリーンショットでわかるように、文字エンコードがANSI
に設定されていることがわかりました(フッターにマウスカーソルがあります):
問題を解決するには、Encoding
のEncode in UTF-8
メニューをクリックし、<=>を選択します。あなたは行ってもいいはずです。 :)
ブラウザがページのエンコードを正しく解釈していないため(特定の設定を強制したか、ページが正しく設定されていないため)、一部の文字を表示できません。
これは、文字エンコーディングと関係があります。
ミラー化されたサイトの文字エンコードに関して、メインサーバーと同じプロパティがありますか?
使用しているサーバーの種類によっては、サーバープロセス自体のプロパティである場合も、環境変数である場合もあります。
たとえば、これがUNIX環境の場合、LANGまたはLC_ALLを比較してみてください。
も参照してください。ミラーサーバーから出力される文字セットを確認します。メインサーバーとは異なるように見えます-ライブサイトはUnicodeを出力しているように見えますが、ミラーはそうではありません。また、通常、受信コンテンツのUnicode文字をスクラブし、適切なHTMLエンティティに置き換えることをお勧めします。
特定の問題は、<!> quot; smart quotes、<!> quot;に関するものです。 <!> quot; emダッシュ<!> quot;および<!> quot; enダッシュ。<!> quot; emダッシュを—
に、nダッシュを–
に置き換えることができることは知っています(データベースの入力側で行う必要があります)。スマートクオートの正しい置き換えが何であるかはわかりません。 (私は通常、すべてのカーリーシングルクォートを 'に、すべてのカーリーダブルクォートを<!> quotに置き換えます。...タイポグラフィのオタクは、すぐに私を撃つことができます。
この問題のあるブラウザは他のブラウザよりも寛容であることに注意してください-Windows上のInternet Explorerは自動的に検出し、<!> quot; fix <!> quot;この; Firefoxおよび他のほとんどのブラウザーには疑問符が表示されます。
通常、MS wordを呪い、次のWscriptを実行します。
//クリーニングが必要なファイルへのパスで置き換えます
PATH = <!> quot; test.html <!> quot;
var go = WScript.CreateObject(<!> quot; Scripting.FileSystemObject <!> quot;);
var content = go.GetFile(PATH).OpenAsTextStream()。ReadAll();
var out = go.CreateTextFile(<!> quot; clean-<!> quot; + PATH、true);
//シンボル
content = content.replace(/ <!>#8220; / g、 '<!> quot;');
content = content.replace(/ <!>#8221; / g、 '<!> quot;');
content = content.replace(/ <!>#8217; / g、<!> quot; '<!> quot;);
content = content.replace(/ <!>#8211; / g、<!> quot;-<!> quot;);
content = content.replace(/ <!>#169; / g、<!> quot; <!> amp; copy; <!> quot;);
content = content.replace(/ <!>#174; / g、<!> quot; <!> amp; reg; <!> quot;);
content = content.replace(/ <!>#176; / g、<!> quot; <!> amp; deg; <!> quot;);
content = content.replace(/ <!>#182; / g、<!> quot; <!> lt; p <!> gt; <!> quot;);
content = content.replace(/ <!>#191; / g、<!> quot; <!> amp; iquest; <!> quot;);
content = content.replace(/ <!>#161; / g、 '<!> amp; iexcl;');
content = content.replace(/ <!>#162; / g、 '<!> amp; cent;');
content = content.replace(/ <!>#163; / g、 '<!> amp; pound;');
content = content.replace(/ <!>#165; / g、 '<!> amp; yen;');
out.Write(content);
Unicodeまたはその他の文字セット文字が通り抜けますか
似たような<!> quot; strange <!> quot;テキストがメールまたは他のドキュメント形式(例:単語)からテキストエディターにコピーされると、私が頻繁に作業したサイトに文字が表示されます。エディターは非ASCII文字を表示できますが、ブラウザーは表示できません。ウェブサイトの場合、キャラクターのHTMLエンティティコードを検索し、代わりに挿入することをお勧めします...または、より標準的なコードに切り替えることをお勧めします。