Win7(x64)に標準のXAMPPをインストールしています。 mysqlエンコーディングがphpエンコーディングと一致しない過去のプロジェクトでエンコーディングの問題を共有していたため、時には他のエンコーディングでhtmlを出力していたため、utf-8を使用してすべてを一貫してエンコードすることにしました。
私はちょうどhtmlマークアップを始めたばかりで、すでに問題が発生しています。
ISO_8859-1
_で保存されました。私は後でSherm Pendleysの回答のおかげでこれを見つけました。戻ってプロジェクト設定(「ISO-8859-1」に設定されていた)を目的の「UTF-8」に変更する必要がありました。AddCharset UTF-8 .php
_<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
_を指定するメタタグがありますheader('Content-Type:text/html; charset=UTF-8');
を設定しますページは明らかにutf-8で提供されています(firefoxとchromeはそのように認識します)が、_é
_、_á
_または_¡
_などの特殊文字_�
_と表示されるだけでなく、ソースコードを表示するときにも表示されます。
上記のエンコード設定をドロップすると、すべての文字が正しくレンダリングされますが、検出されたエンコードには、ブラウザーに応じて_windows-1252
_または_ISO-8859-1
_のいずれかが表示されます。
どうして?私はとても困惑しています。私はまったく逆の動作を期待していたでしょう。
どんなアドバイスでも大歓迎です、ありがとう!
編集:これがもう少し役立つことを願っています。これは応答ヘッダーです(firebugによる)
_HTTP/1.1 200 OK
Date: Sat, 26 Mar 2011 20:49:44 GMT
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_Perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.1
Content-Length: 91
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
_
上記のエンコーディング設定を[ドロップ]すると、すべての文字が正しく[レンダリング]されますが、検出されたエンコーディングには、ブラウザに応じてwindows-1252またはISO-8859-1が表示されます。
それはあなたが本当に送信しているものです。箇条書きリストのエンコード設定はどれも実際に出力を変更しません。送信する内容を解釈するときに、どのエンコードを想定するかをブラウザに伝えるだけです。それがあなたがそれらを手に入れている理由です-あなたはあなたが送信しているものがUTF-8であることをブラウザに伝えていますが、それは本当にISO-8859-1です。
私の場合、ブラウザがlatin1
を期待しているときに、データベースはutf8
を返しました。
したがって、MySQLiの場合:
mysqli_set_charset($dblink, "utf8");
詳細については、 http://php.net/manual/en/mysqli.set-charset.php を参照してください
.php
いくつかのテキストを印刷するファイルは、utf-8
。
最初にPDOにcharset
を伝えます。
PDO("mysql:Host=$Host;dbname=$DB_name;charset=utf8;", $username, $password);
次のことに注意してください:charset=utf8;
パート。
それが役に立てば幸い!
私はブラジル出身で、latin1_spanish_ci
を使用してデータベースを作成しています。 htmlおよび私が使用する他のすべてについて:
charset=ISO-8859-1
データはé
、ã
およびç
でうまくいきます...時々、次のようなコードを使用してhtmlのテキストを配置する必要があります。
Olá
私にくれます
Olá
このページでコードを見つけることができます: http://www.ascii.cl/htmlcodes.htm
お役に立てれば。本当に迷惑だったのを覚えています。
誰も言及されていないようです
SET NAMES utf8;
私はこの解決策を見つけました here そしてそれは私を助けました。適用方法:
すべてUTF-8にするには、データベースサーバーに接続した直後に次のステートメントを発行します。SET NAMES utf8;
たぶんこれは誰かを助けるでしょう。
問題は、ページを提供するためにApacheによって使用されている文字セットです。私はLinuxを使っているので、XAMPPについては何も知りません。私も同じ問題を抱えていました。問題を解決するためにしたことは、charset
構成ファイルに文字セットを追加することでした(デフォルトでコメント化されています)。
私の場合、/etc/Apache2/conf.d/charset
ただし、Windowsを使用しているため、場所が異なります。だから私はあなたにこれを解決方法のアイデアのように与えています。
最後に、私の文字セット設定ファイルは次のようになります。
# Read the documentation before enabling AddDefaultCharset.
# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.
AddDefaultCharset UTF-8
役に立てば幸いです。