+ MySQL PHP kullanarak utf-8 kodlaması ile Sayı

9 Cevap php

I MySQL 4 MySQL 5 için (bunlar başlangıçta latin2 encoding için kuruldu) ve utf-8 kodlaması ayarlanmış veri taşındı. Bu phpMyAdmin iyi görünüyor, ve utf-8 tamam. Ancak bunun yerine web sitesinde bazı karakterler soru işaretleri var! Web sitesi kodlaması utf8 ayarlandığında yüzden sorun nerede anlamıyorum edilir.

PHP ve HTML dosyaları da ayarlanır utf8.

Hiçbir fikrim yok ...

9 Cevap

sorguyu deneyin

SET İSİMLERİ utf8

uygulamanızda herhangi bir sorgudan önce

UTF-8 için MySQL bağlantı kurmayı deneyin:

SET NAMES 'utf8'

Ve sunucu diğer bazı varsayılan ayarları vardır sadece durumda, açık UTF-8 başlıkları gönderin:

header('Content-type: text/html; charset=utf-8');

Benim sunucuda bu etkisi olmadığı bulundu:

ini_set('default_charset','utf-8');
mysql_set_charset('utf8');
header('Content-type: text/html; charset=utf-8');

Ben ilave bir kere ama her şey mükemmel çalıştı:

$mysqli->query("SET NAMES 'utf8'");

Not: Ben kodlama utf8_general_ci kullanılarak, ama utf8_unicode_ci benim durumumda aynı çalışır duyuyorum.

Umut olur.

Sen utf-8 için PHP ve HTML dosyalarını ayarlamak zorunda değilsiniz.

Sadece UTF-8 için çıkış kodlamasını belirlemek için ve tarayıcı uygun görüntüler var.

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP:

header('Content-Type: text/html; charset=UTF-8');

Eğer MySQL tablosundan UTF-8 bir dize olsun zaman kodlama dönüştürmek sürece, bu UTF-8 tüm yol tarayıcı çıkış olacaktır. Bu tarayıcı bunu inteprets bu yoldur.

Put .htaccess file in your web-site root with content: AddDefaultCharset UTF-8

ve

Lütfen dbconfig db bağlantı sonra ayarlanır:

mysql_query ("SET adları 'utf8'");

Burada bir düzeltmedir. header ('Content-type: text/html; charset=utf-8'); Sonra kullanarak içeriği yazdırmak için başlığını ayarlayın utf8_decode($content). Bunu çalışması için iki olmalıdır.

Bir web sitesinde UTF8 karakterleri göstermek ama Latin1 (veya latin2) gibi onları yorumlamak için tarayıcı söylemek zaman anlamsız bu tür bakın: ß

Eğer bir web sitesi Latin1 (veya latin2) karakterleri göstermek, ama UTF8 olarak yorumlamak tarayıcı dediğimde, soru işaretleri görüyorum.

Yani benim tahminim (Yani, web sunucusu ve UTF8'i kullanarak olacağını tarayıcısını DB Engine söyledim) UTF8 için her şeyi açık olduğunu, ama aslında UTF8 dizeleri dönüştürmek değildi.

Darkerstar @ ne dedi etmeyin. UTF8 (Notepad + + kolayca yapabilirsiniz) için dökümü dönüştürmek ve tekrar içe.

(Ben yaşıyorsanız onun aynı sorunu umarım) son zamanlarda bu sorun vardı, ben birçok yolu denedim ama sonunda çalıştı ne çok basit oldu.

UTF-8 formatında dökülüyor, SQL dosya dönüştürme ve yeniden içe.

BW: Ben dönüşüm için Notepad + + kullanılır.

mysql_query("SET NAMES UTF8");

Benim "connection.php" sonunda bu satır ekleyerek benim sorun çözüldü.

Benim bağlantı dosyanın tam kodu:

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_test = "localhost";
$database_test = "test";
$username_test = "username";
$password_test = "password";
$test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR); 
mysql_query("SET NAMES UTF8");
?>

Benim veritabanı harmanlama "utf8_general_ci" dir.

Sayfalar "Dreamweaver varsayılan utf8" ve "unicode normalleştirme form = C (Normal Ayrıştırma)" vardır.