PHP MySQL Kodlama Bug?

3 Cevap php

Benim sorunum iste. Ben bir mysql tablo tırnak denilen var. Satırların birinde, bir alıntı folloqing karakterler içeriyor

‘ and ’

Şimdi sıra harmanlama utf8__unicode__ci

Satırları alınamadı MySQL Query Tarayıcı ve PHPMyAdmin kullanırken amaçlandığı gibi tırnak çıkıyor. Nasıl bugüne kadar ben PHP kullanarak veritabanından onları alınamadı ve onlar kutuları gibi çıkıp bunları ekranda zaman

� and �

Benim html sayfası UTF-8 kodlama vardır, ve tüm UTF-8 kodlama seçenekleri php ayarlanır:

/* Set UTF-8 settings */
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_http_output('UTF-8');

/* Set ICONV ini settings */
ini_set('iconv.input_encoding', 'UTF-8');
ini_set('iconv.output_encoding', 'UTF-8');
ini_set('iconv.internal_encoding', 'UTF-8');

/* Set ICONV function settings */
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');

Bu çalışması gerekir gibi geliyor bana. Ama öyle değil: S Herkes bu üzerine biraz ışık lütfen tutabilir.

3 Cevap

Eğer MySQL bağlantı seçilen charset olarak UTF-8 ayarlamanız gerekebilir. Eğer mysqli PHP sürücüsü kullanıyorsanız, bu böyle bir şey şu anlama gelir:

$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$mysqli->set_charset("utf8");

@ Joakim sayesinde doğru yönde bana ayarı için çok. Im özel bir veritabanı sürücüsü kullanıyorsanız ve mysqli sınıfını değil komutları eski mysql kullanarak çalışır çünkü ben tam kodu kullanabilirsiniz olamazdı. Ben mysql_set_charset kullanarak çalıştı () ama benim php sürümü (hala 5 tho php) destek vermedi.

Bu i kullanılan bir çözümdür:

mysql_query("SET CHARACTER SET utf8", $this->connection);
mysql_query("SET NAMES utf8", $this->connection);

Sizin harmanlama sana faydası olmaz; sadece sıralama düzeni belirleyen oluyor. Sen gibi, utf-8 olarak ayarlanmış varsayılan karakter gerekir:

CREATE TABLE `foo` (
    `id` int not null auto_increment,
    `name` varchar(50)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Sen ile bu adrese gerekir:

ALTER TABLE `foo` DEFAULT CHARSET=utf8

Sadece yakaladım onlar utf-8 iseniz bazen indeksleri çok uzun olacağını olmasıdır.