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

  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • natescamp

    natescamp

    30 NİSAN 2009
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010