2

私はフランスのキャラクターで仕事をしようとしています。なんらかの理由で、ISO-8859-1 文字セットを強制しない限り、PHP はそれらを正しく出力しません (これは本当にやりたくないことです)。UTF-8 を使用できません。

したがって、print_r()ISO-8859-1 を強制するときに配列を実行すると、次の結果が得られます。

Array
(
[0] => stdClass Object
    (
        [language] => fr
        [langselect] => î
        [s1next] => Prochain
        [hascodespan] => Avez-vous déjà un code d'enregistrement?
        [s2prev] => Précédent
        [s2next] => Oui, j'ai déjà un code.
        [ecodedescription] => Un E-Code vous donne un accès exclusif à des événements vraiment cool. Si vous êtes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>.
        [purchase] => Cliquez ici pour acheter en ligne billets
        [ecodespan] => S'il vous plaît entrer votre e-code
        [ecodelocdescription] => Votre code peut être trouvé ci-dessous le code à barres sur votre billet
        [s3prev] => Précédent
        [s3next] => Prochain
        [validationtext] => Validation E-Code ... Un instant.
    )

)

UTF-8 を使用する場合、出力は次のようになります。

Array
(
[0] => stdClass Object
    (
        [language] => fr
        [langselect] => �
        [s1next] => Prochain
        [hascodespan] => Avez-vous d�j� un code d'enregistrement?
        [s2prev] => Pr�c�dent
        [s2next] => Oui, j'ai d�j� un code.
        [ecodedescription] => Un E-Code vous donne un acc�s exclusif � des �v�nements vraiment cool. Si vous �tes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>.
        [purchase] => Cliquez ici pour acheter en ligne billets
        [ecodespan] => S'il vous pla�t entrer votre e-code
        [ecodelocdescription] => Votre code peut �tre trouv� ci-dessous le code � barres sur votre billet
        [s3prev] => Pr�c�dent
        [s3next] => Prochain
        [validationtext] => Validation E-Code ... Un instant.
    )

)

どちらの場合も、 a を実行するjson_encode()と、次の結果が得られます。

[
    {
        language: "fr",
        langselect: null,
        s1next: "Prochain",
        hascodespan: null,
        s2prev: null,
        s2next: null,
        ecodedescription: null,
        purchase: "Cliquez ici pour acheter en ligne billets",
        ecodespan: null,
        ecodelocdescription: null,
        s3prev: null,
        s3next: "Prochain",
        validationtext: "Validation E-Code ... Un instant."
    }
]

データベースを UTF-8 に設定していますが、何らかの奇妙な理由で、フランス語の文字を挿入するたびに、西ヨーロッパのエンコーディングに戻ってしまいます。

主にjson_encode()、翻訳で使用できるように有効な結果を返す必要があります。iconv()とを試しutf8_encode()ましたが、役に立ちませんでした。

どんな助けでも歓迎です。

4

5 に答える 5

4

データベースのエンコーディングに加えて、次のことを必ず確認してください。

  • ファイルのutf8エンコーディング(js / php)
  • utf8 htmlコンテンツ:<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
  • db接続のutf8: SET character_set_connection = 'utf8'
  • mysqlテーブルのutf8:ALTER TABLE table CONVERT TO CHARACTER SET utf8;
  • クエリ結果のutf8:SET character_set_results = 'utf8'
  • dbクライアントのutf8:SET character_set_client = 'utf8'
  • dbサーバーのutf8:SET character_set_database = 'utf8'およびSET character_set_server = 'utf8'
  • 場合によっては、ハードコードされた値にエンコードが必要な場合は、ファイルにutf8を強制する必要があります。たとえば、php / js / xmlファイルの上にコメントを追加する必要があります。charset=utf-8これにより、ultraeditまたはお気に入りのエディターがコメントを検出できるようになります。

rgds。

于 2012-06-07T00:49:07.710 に答える
2

私はそれを理解することができました。それは本当に私が望んでいた解決策ではありませんが、うまくいきます。クエリを次のように調整する必要がありました。

CONVERT(CAST(langselect as BINARY) USING latin1) as langselect
于 2012-06-11T23:46:48.633 に答える
2

基本; あなたの.phpファイルは一番上の行ですか?

header("content-type:text/html;charset=utf8\n");

于 2012-06-07T00:55:51.150 に答える
1

utf8 でソースを直接操作してみてください。

私は同じ問題に直面し、この簡単な解決策を使用しました。新しい PHP または Javascript ソース ファイルを作成するときは、utf8 でエンコードされていることを確認してください。Ultra Edit を使用し、「UTF8 no bom」オプションを選択しました。この簡単な手順で、文字のエンコードに関するすべての問題が解決されました。

最新のブラウザーはすべて utf8 をサポートしているため、これを使用して Web ページをエンコードしてください。互換性のために、すべてのソース ファイルも utf8 にするとより簡単になります。

これは Web 標準に準拠しています。

于 2013-02-14T16:56:21.267 に答える
0

私は同じ問題に遭遇しましたが、私は提案します:

$array = htmlentities($array);
$json = json_encode($array);
于 2012-06-07T01:24:25.777 に答える