PHP SHIFT_JIS metin kullanma

1 Cevap php

Ben Shift_JIS kodlanmış karakterleri kabul ve daha sonra bir alıcıya e-posta yoluyla bu sonuçları göndermek için gereken bir form inşa ediyorum. Ben sadece $ _POST değişkeni sonuçlarını yakalamak için ve sonra bu gibi bir metin bloğunun içine eklemek için denedim:

$NameJp = $_POST['NameJp'];
$contents = <<<TEST

Name: $NameJp

...
TEST

ama bu (gerçekten bana sürpriz değildir) çalışmak için görünmüyor. Bu PHP ASCII olmayan karakterler ile uğraşan ve insanlar bazı öneriler var diye umut ediyorum benim ilk denemem. Belki metni kodlamak için basit bir işlev eksik.

Ayrıca, ben karşılaşabileceğiniz diğer potansiyel tuzaklar vardır?

Teşekkürler.

1 Cevap

Ayrıca, ben karşılaşabileceğiniz diğer potansiyel tuzaklar vardır?

Evet. :)

Bu Shift_JIS metni almak için tüm ince ve iyi, ama tüm yol sonra Shift_JIS gibi ele ve bu metin Shift_JIS olduğunu herkesi bilgilendirmek gerekir. Yani, bir e-posta içine eklerseniz, bu e-posta Shift_JIS metin içerdiğini müşterileri bilgilendirmek uygun e-posta başlıklarını ayarlamak gerekir. Eğer bir web sayfası ya da sadece hata ayıklama görüntülemek için gerekiyorsa, tarayıcı veya hata ayıklama ortamı Shift_JIS metni işleme emin olmak gerekir. Diğer metin ile karıştırırsanız, onlar aynı kodlama olduğunuzdan emin olun.

Dürüst olmak gerekirse, SHIFT_JIS antika ve çalışmak için korkunç. Mümkünse eğer UTF-8 kullanmak gerekir. Kesinlikle, olumlu Shift_JIS kabul etmek ve bunun üzerinde bir sürü iş yapmak gerekiyorsa, dahili UTF-8 dönüştürmek ve zamanı geldiğinde ne gerekiyorsa çıkış kodlama geri dönüştürmek isteyebilirsiniz. Sen iconv bunu yapmak için kullanabilirsiniz.

ASCII karakterleri bir şey ama içeremez e-posta başlıkları MEZUNLARI özeldir. Bir e-postanın konu başlığının bir parçasıdır. Bir konu satırı gibi ASCII olmayan karakterler göndermek için, mb_encode_mimeheader kullanarak kodlamak MIME gerekir.

Ayrıca, için zorunlu referans: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)