Asp.net yanlış kodlama ile dize işler, ancak PHP yoktur (MySQL)

3 Cevap

Ben veritabanı olarak MySQL ile bazı eski php uygulama devraldı. Veritabanı içinde, (bu nedenle özel karakter içeren) lokalize dizeleri ile içerik dahil olmak üzere tablolar vardır

Şu anda bu veritabanına erişen bir PHP uygulaması vardır. Benim işim bu dizeleri de erişen bir ASP.net (C # codebehind) uygulama oluşturmak için. O kadar kodlama gider gibi çalışır.

Ben bu dizeleri erişmeye çalışırsanız, ben kodlama sorunu bir tür olsun, 'à "ndern' ve 'Prà ¼ fzeichen', ama sadece ASP.net uygulama gibi. PHP uygulaması charset utf-8 ayarlar ve dizeleri mükemmel işlenir. ASP.net uygulamasında ne olursa olsun sayfa kodlama, anlamsız bulunuyor.

'Latin_swedish_ci' için - 'Batı Avrupa CP1252 latin ve harmanlama MySQL veritabanı, belirtilen tablo' çeviriler için 'charset ayarlanır.

Ben PHP görünüşte ne yaptığını anlamaya gibi olamaz, ve ASP.net yok. Ben php kodu takip ve veritabanından bir dize alırken özel kodlama herhangi bir işaret bulamadı.

Soru php kodu büyük değişiklikler mümkün değildir, çünkü nasıl, veritabanını değiştirmeden ASP.net uygulama içinde doğru kodlamayı sağlamak, nedir?

Herkes bir ipucu var mı?

3 Cevap

Sonunda UTF8 dönüştürmek için bir yol bulmak için yönetilen eğer.

System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes("convert me"))

Iyi uzun vadeli çözüm UTF-8 kodlama kullanmak için tabloya dönüştürmek olacaktır:

ALTER TABLE translations CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Veri (karakter kümesi latin1 olsa bile) utf-8 biçiminde zaten varsa, doğru kodlama için her sütunu dönüştürmek gerekir.

Bu latin1 olmak ancak ve utf8 içeren bildirilmiş bir sütuna utf8 içeren olarak tanımlanan bir sütun dönüştürür:

ALTER TABLE translations CHANGE columnNameHere columnNameHere BLOB;
ALTER TABLE translations CHANGE columnNameHere columnNameHere TEXT CHARACTER SET utf8;

Ben, PHP görünüşe göre ne yaptığını anlamaya gibi olamaz

PHP uygulaması charset utf-8 ayarlar. Veritabanı bağlantısı için. SET NAMES <encoding> sorgusu ile. Nerede <encoding> kodlamayı sayfaları