0

1)tbl_Dataデータベースにnameテキスト比較メソッド(?)プロパティがに設定された列を持つテーブルがありますutf8_polish_citbl_DataphpMyAdminを閲覧しているときは、魅力として機能します。

2)私のhtmlコードで私は持っています:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">

ブラウザ用の適切なエンコーディングヘッダーを送信しているようです...

3)私のPDO dsnには;charset=UTF-8、phpマニュアルに続くが含まれています。

4)私のphpコードで私は使用します:

foreach(parent::query('SELECT ID,PLName,LatinName from tbl_Data') as $row) {
    $result = $result."
        <tr>
            <td>".utf8_encode($row['PLName'])."</td>
        </tr>
    ";
}

これらすべてを使用しても、適切なポーランド語の文字ではなく、「ガベージ」(= ?)文字が表示されますが、一部は正常に表示されます(phpMyAdminはすべてを適切に表示します)。私がここで欠けているものは何ですか?アドバイスしてください、仲間!

私のMySQLエンジンはInnoDB、webserverです:nginxそれが関連している場合はfpmを使用します...

4

5 に答える 5

2

ブラウザに適切なエンコードヘッダーを送信しているようです。

違う。<meta>は HTTP ヘッダーではなく、非標準の HTML タグです。したがって、コードにはまだ適切なヘッダーがありません。

header('Content-Type: text/html; charset=utf-8');

私の PDO dsn には ;charset=UTF-8 が含まれており、php マニュアルに続きます。

PHP のバージョンが 5.3.6 未満の場合も機能しません。SET NAMES utf8代わりに通常のクエリを使用してください

于 2012-12-28T05:12:52.147 に答える
1

文字セットUTF-8は良いです(あなたのhtmlで):P

これを試してください..(たとえば、PHPスクリプトが$ _POSTエントリをクリーンアップしているのか、それとも何かをしているのかわからないため、これには新しい実験的なテーブルを使用して確認してください。)

  1. utf8_bin「polish_title」という名前の(utf_ci_polishではなく)に設定された列を作成します

  2. PHPが(テキスト入力、ポリッシュ)データをmysqlに渡す前にINSERT (or update)、この(PHP統合)関数を使用してデータを隠蔽します

    $polish_input = htmlspecialchars($ input_polish_data);

    INSERT INTO table_name(polish_title)values('$polish_input');

ポリッシュサインが入力の一部である場合(phpmyadmin経由)、mysqlテーブルに奇妙なデータが表示されますが、mysqlデータを取得すると、サイトに適切なデータ(ポリッシュネイティブ)が表示されます;)

これが機能する場合は、すべてのmqsql(テキスト)列をutf8_binに変更する必要があります。また、自分で簡単に入力できるように、Webサイト上のすべての$_POST入力をmysqlDBに接続する前に「クリーンアップ」できる関数を作成できます。

これの大きなプラスは、他の国からの訪問者があなたのネイティブの文字とサインを見るということです(これも重要です)。

編集(常識的なユーザー入力へのthx)

そして、ええ、これをあなたのヘッダーにもMUSTとして含めてください

header('Content-Type: text/html; charset=utf-8');
于 2012-12-28T04:36:10.647 に答える
1

utf8_encode()テキストが既に UTF-8 でエンコードされている場合は、使用する理由はありません。

潜在的な問題は、PHP のバージョンである可能性があります。DSNの;charset=UTF-8要素は、PHP バージョン >= 5.3.6 でのみサポートされています。5.3.6 より前は、この要素は(警告を発行する代わりに) 黙って無視されていました。詳細と回避策については、次のドキュメントを参照してください: http://php.net/manual/en/ref.pdo-mysql.connection.php

于 2012-12-28T04:22:39.297 に答える
0

私はあなたの投稿にコメントできませんでした.....だから私はここに提案します~_~ここ
から、utf8_encodeと言いました— ISO-8859-1文字列をUTF-8にエンコードし ますしたがって、私の質問は:あなたの出力はISOです- 8859-1? 通常の英語のテスト記録を作成して、もう一度やり直してください。

于 2012-12-28T03:18:34.813 に答える
-1

HTML コードで、次のことを試してください。

<meta http-equiv="content-type" content="text/html; charset=utf-8">
于 2012-12-28T04:53:32.170 に答える