Mysql: latin1->

3 Cevap php

There was a table in latin1 and site in cp1252 I want to have table in utf8 and site in utf-8

Yaptığım:

1) web sayfasında: Content-Type: text/html;charset=utf-8

2) Mysql: ALTER TABLE XXX CONVERT TO CHARACTER SET utf8

_

This SQL doesn't work as I want - bu dönüştürmek değil ä & Onların multibyte eşdeğerleri için veritabanında ü karakter

Please Help. Tanks

3 Cevap

Ben bir aptal oldum. SET NAMES eksikti.

What I know now:

1) Bir sütunun charset değiştirildiğinde her zaman, gerçek veri DAİMA nden! Olduğunu görmek için ikili alanını değiştirin.

2) Bir sütunun charset önce olduğunu!, Öncelikli olarak masa ve db charset takip. Bunlar varsayılan ayar için ağırlıklı olarak kullanılır. (Son cümle yaklaşık% 100 emin değilim)

3) SET NAMES very önemlidir. Alman karakterler latin1 gelebilir ve yerleştirilmesi doğru İSİMLERİ SET zaman (sessizce Mysql tarafından kodlanması) utf8 tabloda doğru olsun. Sunucu olursa olsun tablo kodlama nedir, arzu kodlama bir web sayfasına veri gönderebilirsiniz. Bu çıkış için ters yüklü olabilir

Onlar bir kodlama vardır gibi görünüyor böylece orada kodlama A sütun ve kodlama B sütun olduğunu ve) bunları karşılaştırmak (veya GİBİ kullanın 4) Eğer, Mysql sessizce onları dönüştürmek olacak

5) Mysql akıllı. Türü binary. Sürece bayt ile metinle birlikte çalışır asla Her zaman karakter olarak çalışır! O latin1 yılında ё utf8 içinde ё eşit olacağını istiyorsa o knows veri kodlama

this blog post MySQL'in ALTER TABLE CONVERT sözdizimi kötü bir fikir [TM] kullanıldığı, diyor. , Sizin verileri tabloya dönüştürmek ve blog yazısı açıklandığı gibi, verileri reimport.

Başka bir fikir: etc / my.cnf veya mysqli::set-charset / üzerinden varsayılan istemci bağlantı karakter seti var.

Eğer şimdi s ** t geri almak iddia yana, karakterler veritabanında değiştirilmiş olduğunu göstermektedir.

Nasıl MySQL veri erişim vardır? Eğer PHP gibi bir programlama arabirimini kullanıyorsanız, o zaman hangi karakter kodlamasının beklemek o arayüzü söylemek gerekebilir.

Örneğin, PHP sizin mysql_set_charset("utf8"); ama aynı zamanda SET NAMES utf8 bir SQL sorgusu ile yapılabilir gibi bir şey aramak gerekir

Bunu o zaman da emin olursa olsun metni utf8 ve uygun bir kodlama ile render bilir görüntülediğini olmak gerekir. Örneğin, bir web sayfasında Eğer utf-8 için içerik türünü ayarlamanız gerekir. gibi bir şey Content-Type: text/html;charset=utf-8