ISO-8859-1 olarak gösterilir utf-8 karakter

0 Cevap php

Ben bir db den utf8 içerik okuma / ekleme ile bir sorunu var. Ben yapıyorum Tüm doğrulamalar benim DB içerik UTF8 kodlanmış gerektiği gerçeğine işaret gibi görünüyor, ancak kodlanmış latin gibi görünüyor. Veri başlangıçta CLI'den bir PHP komut dosyası ithal edilmektedir.

Configuration:

Zend Framework Version: 1.10.5
mysql-server-5.0:   5.0.51a-3ubuntu5.7
php5-Mysql:     5.2.4-2ubuntu5.10
apache2:        2.2.8-1ubuntu0.16
libapache2-mod-php5:    5.2.4-2ubuntu5.10

Vertifications:

-Mysql:

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_bin        |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

-Database

created with 
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE SCHEMA `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;

mysql> status;
--------------
mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

Connection id:          7
Current database:       mydb
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.51a-3ubuntu5.7-log (Ubuntu)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 9 min 45 sec

-Sql: Benim ekler yapmadan önce ben çalıştırmak

SET names 'utf8';

-Php: Benim ekler yaparak önce utf8_encode() kullanın ve mb_detect_encoding() ki bana 'UTF-8' verir. Db içeriği retrieveing ​​sonra ve kullanıcı mb_detect_encoding göndermeden önce () Ayrıca, 'UTF-8' veriyor

Validation test:

bana doğru görüntülenen içeriği olması için tek yol içerik türünü latin (I trafiği dinleyebilir ben ISO-8859-1 ile içerik türü başlığını görebilirsiniz) ayarlamak için:

ini_set('default_charset', 'ISO-8859-1');

This test shows that the content comes out as latin. I don't understand why. Does anybody have any idea?

Teşekkürler.

0 Cevap