2

mysql データベースのバックアップがあります。そして、このバックアップ照合は utf8-general-ci です。これは vbulletin からのバックアップです。

データベースの記事からの文を次に示します。

Ticaret Merkezi sizin ticaret yapmanýzý saðlayan müthiþ bir platformdur. Bu platformda Internet ile baðý olmayan tüccarlar için ticaret yapma olanaðý saðlanmýþtýr. Bazý nedenlerden dolayý kendine site kuramayan tüccarlar burada kendi ürünlerini tanýtabilecek ve yine burada bir çok tüccar ile sohbet edebilecek.

Bir çok satýcý ve müþteri arasýnda bað kuracak bu sistem sayesinde ticaret daha kolaylaþacak.

私のhtmlコードはそのようなものです

<html lang="tr"> 
<head> 
<meta charset="utf8"> 
</head> 
</html>

lang='tr' と charset='utf-8' を使用しない場合。私のデータはこれになります

Ticaret Merkezi sizin ticaret yapmanýzý saðlayan müthiþ bir platformdur. プラットホームダ インターネット イルバオ オルマヤン トゥクカーラー イアン ティカレット ヤプマ オラナ アン サランマー. Bazý nedenlerden dolayý kendine サイト kuramayan tüccarlar burada kendi ürünlerini tanýtabilecek ve yine burada bir §ok tüccar ile sohbet edebilecek.

Bir §ok satýcý ve müñ¾teri arasýnda bað kuracak bu sistem sayesinde ticaret daha kolaylaþacak.

ただし、 lang='tr' および charset='utf-8' はすべてを変換しているわけではありません。

実際、私はこの問題に問題はありません。しかし、この記事はそのようにデータベースに保存されました。

これらの文字をどのように変換できますか? str_replace を使用したくありません。

ý => ı、ð => ğ、þ => ş など。

私のデータベース接続部分

public function __construct() {
    $this->db_connection = mysql_connect($this->_server, $this->_dbuser, $this->_dbpassword) OR die ("Veritabanı Sunucusuna Bağlanılamadı!" . mysql_error() );
    mysql_query('SET NAMES utf8'); 
    mysql_query('SET CHARACTER_SET utf8'); 
    mysql_query("SET COLLATION_CONNECTION = 'utf-8'");

    mysql_select_db($this->_db) or die("Veritabanı Bulunamadı" . mysql_error() );
}
4

2 に答える 2

1

私は以前にこのような問題に遭遇しました。最初に、データベースから取得した記事を表示するために使用したコンソールまたはエディターが「utf-8」形式を使用していることを確認する必要があると思います。この問題は、データベース自体ではなく、コンソールによって引き起こされる可能性があることを意味します。

于 2013-07-27T07:01:32.803 に答える
0

私は「英語以外の」文字を扱ってきたので、これらの文字を適切に表示および保存するには、いくつかのことが必要です。

順不同 (ペルシア語に最適な文字セットがわからないため、UTF-8 を使用します。異なる場合は、必要なものを使用してください):

header('Content-type: text/html; charset=utf-8');PHP から適切なヘッダーを設定するか、次のように HTML にメタ タグを設定して、使用している文字セットをブラウザに伝えます。<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

データベースでは、列/テーブルに異なる照合順序と文字セットを混在させないようにしてください。私は常にデータベース、テーブル、および列を utf8_general_ci に設定しています。これは、私のニーズに合わせて常に機能します (英語、ドイツ語、セルビア語、ハンガリー語などの言語...)。

Jan が言ったように、http://dev.mysql.com/doc/refman/5.0/en/charset-connection.htmlを読んでください。おそらく、データベースに接続した直後に SET NAMES utf8 のようなクエリを実行する必要があります。

これにより、Unicode 文字が適切に表示されるようになります。ただし、これらすべてをオーバーライドできるものがもう 1 つあります。Web サーバーです。Apache (他のサーバーについては知りません) には AddDefaultCharset ディレクティブがあります。ほとんどのセットアップでは、これはオフのままですが、デフォルトの文字セットが latin1 に設定されているセットアップに遭遇したため、すべての文字セット設定が上書きされました。これが設定されている場合は、httpd.conf (または同様の構成ファイル) で設定されます。アクセスできる場合は、オフに設定することをお勧めします。そうでない場合は、次のようなものを使用して、webroot に配置された .htaccess でグローバル値をオーバーライドできます: AddDefaultCharset utf-8

于 2013-07-27T06:59:31.870 に答える