SORU
22 Temmuz 2009, ÇARŞAMBA


Düzeltmek için nasıl "Hatalı dize değeri" hatalar?

Sonra fark bir uygulama eğiliminde atmak için rastgele e-postalar nedeniyle hatalı dize değeri hataları, gittim ama çok geçti ve metin sütunları kullanmak için utf8 sütun karakter ve varsayılan sütun harmanlama (utf8_general_ci) yani bu kabul onları. Bu hataların çoğu düzeltildi ve uygulama latin olmayan e-postalar vurduğunda sql hataları alıyorum, çok mola verdi.

Buna rağmen, e-postalar, bazı program dize değeri Yanlış errrors vurmak için neden vardır: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)

İçindekiler sütun utf8 sütun karakter kümesi kullanan MEDIUMTEXT bir datatybe ve utf8_general_ci sütun harmanla. Bu sütunda geçiş yapabilirim o bayraklar yok.

Veya gerekli kesinlikle: sürece uygulama kaynak kodu dokunmak bile bakmak istemiyorum akılda tutmak

  • Bu hataya neden olan ne? (Evet, e-postalar rastgele çöp dolu olduğunu biliyorum, ama utf8 oldukça müsamahakar olacağını düşündüm)
  • Bunu nasıl düzeltebilirim?
  • Böyle bir düzeltme olası etkileri nelerdir?

Bir şey olarak kabul edildi geçiş için bir utf8 ikilik([biraz büyük numara]) ile ikili bayrağı açtılar, ama ben daha çok yabancı ile MySQL, ve hiçbir fikrim yok eğer böyle bir düzeltme mantıklı.

CEVAP
13 HAZİRAN 2012, ÇARŞAMBA


Veritabanı içindeki veriler berbat çünkü Richies cevap öneriyoruz. Probleminizi ama" o değil de sıçtı verileri ile temel veritabanı işlemleri gerçekleştirmek için güçlü olmak. "gizlemek için deneyin olmaz

Bu hata ile karşılaşırsanız ya da gönderdiğiniz verileri UTF-8 olarak kodlanmış veya bağlantı UTF-8 değil. İlk olarak, veri kaynağı doğrulamak, (bir dosya, ...)gerçektenise UTF-8.

Sonra, veritabanı bağlantınızı kontrol edin, bağladıktan sonra bunu yapmanız gerekir:

SET NAMES 'utf8';
SET CHARACTER SET utf8;

Ardından, verilerin depolandığı tablolar utf8 karakter kümesi doğrulayın:

SELECT
  `tables`.`TABLE_NAME`,
  `collations`.`character_set_name`
FROM
  `information_schema`.`TABLES` AS `tables`,
  `information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
  `tables`.`table_schema` = DATABASE()
  AND `collations`.`collation_name` = `tables`.`table_collation`
;

Son, veritabanı ayarlarınızı kontrol edin:

mysql> show variables like '%colla%';
mysql> show variables like '%charac%';

Kaynak, ulaştırma ve hedef UTF-8, sorun gitti;)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • circuschina

    circuschina

    16 Mart 2007
  • MotoManTV

    MotoManTV

    10 Aralık 2009
  • Professor Messer

    Professor Me

    27 NİSAN 2007