LAMP app karakter kodlamaları Sorunları - UTF-8 ya da değil?

4 Cevap php

Ben hala PHP ile ipleri öğrenme ve yaşıyorum MySQL ve ben karakter setleri nasıl ayarlanır burada yanlış bir şey yaptığımı biliyorum, ama oldukça burada okuma ve ne yapmam gerektiğini web anlamaya olamaz.

PHP 5, MySQL 5 ile standart LAMP yükleme var. Ben varsayılan her şeyi kurmak. Çoğunlukla kesme ve em an tire - benim kullanıcıların girdi bazıları bizim veritabanına comments bazı karakterler yanlış göstermek. MySQL apostrostrophes € ™ â olarak gösterilir. Onlar (Ben çıkış kullanıcı yorumlarına htmlentitiesi kullanıyorum) da sayfadaki bu şekilde gösterilecek.

PhpMyAdmin içinde benim MySQL Karakter UTF8 Unicode olduğunu söylüyor.

Benim veritabanında benim tablolar tüm varsayılan Latin1-İsveç-ci ayarlanır.

Benim web sayfaları tüm meta http-equiv = "Content-Type" içeriğe sahip = "text / html; charset = utf-8"

Ben sitenin http başlıklarında baktığımızda görüyorum: Content-Type: text / html

Şeyler benim bazı sayfalarında garip görünümlü başlayana kadar bir acemi gibi, ben de tüm karakter setleri kabul etmemişti. Beni utf-8 için her şeyi dönüştürmek için ve bu benim PHP kodu etkileyecek için bu yüzden en mantıklı mı? Yoksa Latince içine tüm almak için çalışmalısınız? Ve ben veritabanına gidin ve bu garip kodları değiştirmek, ya da ben doğru charsets kurmak kez onlar sihirli görüntüler var mı? Ben şimdiye kadar yaptığım tüm işe yaramaz (I utf-8 için http başlıklarını ayarlamak ve ayrıca latin denedim) yardım etmedi.

4 Cevap

http://www.phpwact.org/php/i18n/charsets

Bu site Bana her şeyi UTF-8 güzel oyun yapmak için nasıl iyi tavsiye bir sürü verdi.

Daha UTF dostu olarak ben de htmlspecialchars Htmlentities geçiş recomened.

Ana nokta her şeyin aynı dili konuşuyor yapmaktır. Veritabanı, veritabanı bağlantısı, PHP, sayfanızın (bir meta etiketi ve bunu söyleyerek bir başlık olmalıdır) utf8 olduğunu.

Eğer gerçekten bu sorunları anlamak istiyorsanız, ben okuyarak başlamak istiyorum this article at mysql.com. Temel olarak, bulmacanın her parça UTF-8 unicode beklemek istiyorum. PHP tarafında, gibi bir şey yapmak istiyorum:

<?php header("Content-type: text/html; charset=utf-8");?>
<html>
  <head>
     <meta http-equiv="Content-type" value="text/html; charset=utf-8">

Eğer insert sorguları çalıştırdığınızda ve her iki tablonun karakter kodlaması size sorguları koşuyoruz and kodlaması UTF-8 olduğundan emin olmak istiyorum. Eğer bir ekleme sorgusu çalıştırmak hemen önce SET NAMES utf8 sorguyu çalıştırarak ikincisi gerçekleştirebilirsiniz.

Sorunuzun tüm anlamak için üzgünüm. Sorunun parçası? "UTF-8 veya" Ama ne zaman, cevap: "UTF-8, tabii ki!"

Kesinlikle şimdi daha sonra yerine şeyleri sıralamak istiyorum. En önemli programlama kurallardan biri kötü bir fikir ile devam etmek değil - herhangi bir derin kendinizi kazmak yok!

Latin1 ve utf-8 uyumlu olduğundan, sizin tablolar elle içerdiği verileri manipüle olmadan UTF-8 kullanmak için dönüştürebilirsiniz. MySQL sizin için bu bölümü dışarı sıralamak.

Her şeyi utf-8 konuşan olup olmadığını kontrol etmek zaman önemlidir. Apache de http başlıklarını ayarlamak veya bir meta etiketi kullanın - bu HTML çıktı utf-8 bir tarayıcıya söylüyor.

Bu düşünceyle, size göndermek tüm verileri gerçekten utf-8 olduğundan emin olmak gerekir! Utf-8 olarak php / html dosyaları kaydetmek için IDE yapılandırın. Sonunda PHP MySQL bir utf-8 bağlantısını kullanarak emin olun - bağladıktan sonra bu sorguyu çalıştırın:

SET NAMES 'utf-8';