PHP ve MySQL Karakter Kodlamaları

3 Cevap php

Web sitemiz ayarlanmış bir meta etiketi ile geliştirilen ...

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Bu veri MySQL veri depolayan bir CMS bileşeni içine girildiğinde Ancak, ben bir sorun var M-tire ve özel tırnak, vb için çalışıyor. MySQL harmanlama UTF8_swedish_ci (Ben bu ok ve phpMySqlAdmin yılında kurulduğunda varsayılan olmalı okumak) ayarlanır.

The problem I now get is when I output info from the DB to the page, the characters are utf8 encoded, so I run them through the uft8_decode() php function. I thought this would fix the incompatibility, but what I'm getting isn't what I expect.

Ben (yine phpMySqlAdmin aracılığıyla) bir metin alanında DB verilere baktığımızda bu gibi görünüyor ...

Bu - Bu

Ben ekranda görüntülemek zaman gibi görünüyor ...

Bu? O

Ben DB veya metinde bu bir demet / değiştirin bulmak için deneyebilirsiniz biliyorum, ama ben bu programlama yapmak için daha kolay bir yolu var umuyorum.

Thanks, Don


Güncelleme:

Hala htmlentities () ne yazık ki çözmezse bir sorunu var.

Ben böyle bir dosyada metin var: biz ('özel) var. Benim MySQL harmanlama "latin1_swedish_ci" (varsayılan). Ben iso / utf bir ya da diğer tatili birine başlığını ya da meta değiştirin. W / utf-8 (') siyah bir elmas ama db içeriği gayet iyi. Iso ile, satır içi içerik Tamam, ama db gelen içeriği ve diğer karakter her türlü sahiptir. Utf-8 MySQL harmanlama değiştirmeyi denedim ama bir fark görmedim.

Ben hakkında elle öğeleri değiştirerek karar ediyorum. Başka önerileriniz için teşekkür ederiz.

3 Cevap

Veritabanındaki verilerin UTF8 ise, MySQL bağlandıktan sonra, bu sorguyu çalıştırmak gerekir:

SET NAMES UTF8

Eğer veritabanında düzgün kodlama ayarlamak mümkün olduğunu varsayarsak, burada önerilen yaklaşım şudur:

  • Make sure that the Content-Type header has been set properly by the server. This can be done in php by using the header function.

    header ('Content-Type: text / html; charset = iso-8859-1');

Bu önceliklidir ve kullanıcı ajanları bunu ayrıştırmak zorunda değilsiniz çünkü almak kolay bilgi olduğunu unutmayın.

  • HTML dosyasında meta etiketi ayarlayın.

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

Ileri okumalar için, bkz:

http://www.joelonsoftware.com/articles/Unicode.html

http://www.webstandards.org/learn/articles/askw3c/dec2002/

Benim tahminim meta etiketi rağmen, web sunucusu UTF-8 charset ayarlar bir başlık gönderir olurdu. Ancak, bu tür sorunları düzeltmek için kolay yolu HTML öğeleri olmayan ASCII karakterleri kaçmak için genellikle.