Проблема кодирования запросов базы данных MySQL в PHP - PullRequest
1 голос
/ 28 апреля 2011

Здравствуйте, у меня есть эта проблема: у меня есть база данных MySQL с сопоставлением latin1_bin . В базе данных у меня есть таблица с сопоставлением utf8_s Slovak_ci . Все столбцы текст . В строках у меня есть значения с (í ľ š č (utf8) символов, но код PHP возвращает значения с символами utf8, замененными на ,? и другими не читаемыми символами. В html head я установил charset в utf-8 . Пожалуйста, помогите мне. У меня есть этот код:

//From config file
define ("DATABASE_SERVER", "localhost");
define ("DATABASE_LOGIN", "root");
define ("DATABASE_PASSWORD", "root");
define ("DATABASE_DATABASE", "novymost");

mysql_connect(DATABASE_SERVER, DATABASE_LOGIN, DATABASE_PASSWORD)or die(mysql_error());
mysql_select_db("novymost")or die(mysql_error());
$results=mysql_query("SELECT * FROM Downloads") or die(mysql_error());
$row = mysql_fetch_array( $result );
// Print out the contents of the entry 

while($rows = mysql_fetch_array($results))
{
echo("<li>");
echo "<a href=\"".$rows["URL"];
echo("\">");
echo "".$rows["TITLE"];
echo(" - ".$rows["SIZE"]);
echo("</a>");
echo("<br/></li>");
}

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011

выполнить запрос

mysql_query( "set names utf8" );

перед выполнением любых других запросов. Это устанавливает соединение charset

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

2 голосов
/ 28 апреля 2011

В php:

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

В HTML:

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

В базе данных перед запросами:

mysql_query( "set names utf8" );

Или вы также можете конвертировать васлатинский стол к UTF8-столу:

INSERT INTO utf8table (utf8column) 
SELECT CONVERT(latin1field USING utf8)
FROM latin1table; 
...