Ben bir MySQL veritabanı ülkelerin bir listesini saklamak için çalışıyorum.
Ben bu gibi (İngilizce olmayan) isimler depolamak sorun yaşıyorum:
- Sao Tome ve Principe
- República de El Salvador
Onlar, db garip karakterler ile saklanır (ve dolayısıyla benim HTML sayfalarına garip çıkış) vardır.
Ben veritabanı ve MySQL bağlantı harmanlama için alfabe farklı kombinasyonları kullanarak denedi:
"Bariz" ayarı databse ve bağlantı bilgileri hem utf8_unicode_ci kullanımı idi. Benim mutlak sürpriz, bu sorunu çözmek değildi.
Herkes bu sorunu çözmek için nasıl biliyor mu?
[Edit]
Bu sorun harmanlama ile ilgisi olmayan çıkıyor, ama kodlama ziyade, col tarafından işaret olarak. Ben komut satırında, ben iki ayrı komutlar yazabilirsiniz fark:
SET NAMES utf8
followed by
[QUERY]
[SORGU] adlarını almak için benim SQL statment olduğunu ve nerede çalıştığını (isimler artık karıştırılmış vardır). Ben (yani kodu ile) programlama aynı şeyi yapmak Ancak, ben hala karıştırılmış isimleri olsun. Ben böyle iki ifadeyi birleştirerek çalıştı:
SET NAMES utf8; [QUERY]
Komut satırında, yine, bu doğru dizeleri döndü. Ben kodu ile aynı ifadeleri çalıştım kez daha, ben yanlış değerleri var.
Bu benim kod neye benzediğini bir parçası olduğunu:
$mysqli = self::get_db_connection();
$mysqli->query('SET NAMES utf8');
$sql = 'SELECT id, name FROM country';
$results = self::fetch($sql);
the fetch method is:
private static function fetch($query)
{
$rows = array();
if (!empty($query))
{
$mysqli = self::get_db_connection();
if ($mysqli->connect_errno)
{
self::logError($mysqli->connect_error);
}
else
{
if ($result = $mysqli->query($query))
{
if(is_object($result)){
while ($row = $result->fetch_array(MYSQLI_ASSOC))
$rows[] = $row;
$result->close();
}
}
}
}
return $rows;
}
Herkes vericidir yanlış yapıyor olabilir ne nokta olabilir?
Just to clarify, the HTTP headers in the page are set correctly 'Content-type': 'text/html; charset=utf-8'
böylece sorun burada değil şu.