2016-03-29 10 views
-1

私はPHPのためにそれをやっている古いバージョン:PHP 5.6で文字セットをUTF-8に正しく設定する方法は?

<?php require_once('Connections/SQLConn.php'); 
mysql_query("SET NAMES 'utf8'"); ?> 

は、今私はPHP 5.6にアップデートするために、この時代遅れのコードを更新したい、よく私はmysqliのことで変化する、にhtmlentities()やhtmlspecialchars()を試してみましたそれは動作しません。

example of typical black rhombus

私のウェブサイトは、スペイン語と英語の両方の言語のための準備ができているので、私のローカルデータベースはlatin1_swedish_ciで照合され、(必要であれば、あなたがそれを知っているために)私のデシベルのすべての単一のテーブルがutf8_spanish_ciによって照合されます。

+2

* latin1_swedish_ci私のウェブサイトはスペイン語と英語の両方の準備が整っているから* utf8_general_ciとは対照的に、それはあなたには論理的ですね。 – CD001

+2

私はすべてのテーブルを個別に設定しました。(UTF-8のすべての方法が可能です)(http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – CD001

+0

@ CD001 latin1_swedish_ciと同じ問題です。 – danibeam

答えて

0

do mysql_* APIを使用します。 PDOまたはmysqli_*に切り替えます。後者の文で(議論されたように)黒菱形は、通常、クライアント内のテキストのエンコーディングが接続

  • LATIN1ある

    • によって引き起こされる$conn->charset('utf8');

      ある

    • LATIN1テーブルでありますカラムは
    • (どちらかと同じ効果を持つ)LATIN1またはUTF8のいずれであってもよいHTMLコードは<meta ... charset=UTF-8>
    言います

    latin1を途中で実行する必要があります。その場合、メタ内の文字セットはISO-8859-1である必要があります。または、utf8に行ってください。

    スペイン語は、utf8のようにlatin1で「同等に」うまく動作します。しかし、西ヨーロッパの東に行くと、latin1は不十分になります。

    困っているので、テーブルの内容を確認してください。 ñは、CHARACTER SET latin1の場合は16進数F1、utf8の場合はC3B1です。 latin1テーブルでC3B1が表示される場合は、別の問題があります。

    +0

    アドバイスをいただき、ありがとうございます。私はutf8のために行くつもりです。 – danibeam