Nasıl olarak kodlanmış bir karakter için glifi alabilirim 'ō'

2 Cevap php

Ben alanında 'utf8_general_ci' ve değerin bir harmanlama ile bir MySQL veritabanı tablo var ise:

x & # 299; bán YA wen (boşluksuz).

Bu (StackOverflow adlı editör tarafından örneğin) dönüştürülür zaman bu gibi görünüyor:

Xi bán YA wen

ikinci karakter daha düşük durumda ben üst üzerinde bir bar gibi görünüyor nerede.

PHP, hangi işlevi ve dönüştürür # 299; ī karakterin içine varlık?

Ancak ben aşağıdaki gibi karakterleri olsun, html_entity_decode ($ str, ENT_COMPAT, 'UTF-8') kullanarak denedim:

yÄ «n Wen veya zha • ng wen

Ben yanlış işlevini kullanarak değilim neden olan kod çözme hakkında anlamadığınız bir şey var eminim. Herkes varlık tarafından temsil & ediyor tek karakter glif almak için bazı ışık tutabilecek # 299 ve 255 üzerinde benzer bir yüksek sayı karakterler?

Many thanks, AE

2 Cevap

UTF-8 multibyte encoding olduğunu. Eğer Latin-1 gibi bir tek bayt kodlama aracılığıyla ona bakarsanız gibi size kadar görüyorsanız sonuçları gibi bir şey görürsünüz. Gerçek karakteri görmek için UTF-8 belge kodlamasını ayarlayın.

İlk sorunuza gelince, aslında karakter başvurusu çözme ve karakteri değil PHP baskı oluyor tarayıcı bulunuyor.

Unicode for the working PHP programmer: Ben bu sayfada okumanızı öneririz. Bu uzun değildir ve iyiye ve kendinden emin Unicode ve UTF-8 içine almalısınız.

Bu tip şeylerle iyisin kez, mbstring ve çok kullanışlı intl PHP uzantıları, check out. Ve PHP string fonksiyonları ve multibyte dizeleri kullanmak için güvenli değildir hangi biliyorum. İşte the notes I made I UTF-8 yaramaz string fonksiyonları bir listesini içeren bir site geçiş ne zaman.