我有俄语网站,而不是俄语数据我看到英语数据。
<?php
$dbc_utf8 = mysqli_connect ("mysite.com", "xxxxxxxxxxx", "xxxxxxxxxxx", "xxxxxxxxxxx");
mysqli_query($dbc_utf8, 'SET CHARACTER utf8');
mysqli_query($dbc_utf8, 'SET NAMES utf8');
/* Installing Russian locale Connection */
mysqli_query($dbc_utf8, "SET lc_time_names = 'ru_RU'") ;
?>
我有数据库,我需要字段&#34; date_add&#34;在俄罗斯。在屏幕上我看到&#34; 2014年2月23日&#34;
CREATE TABLE `comment_common` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(5) NOT NULL,
`id_post` int(5) NOT NULL,
`id_shop` int(5) NOT NULL,
`name` varchar(200) CHARACTER SET utf8 NOT NULL,
`comment` text CHARACTER SET utf8 NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11568 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11568 ;
在数据库中
$sql = "
SELECT id, parent_id, name, comment,
DATE_FORMAT(date_add, '%d %M %Y') as date_add
FROM comment_common
";
答案 0 :(得分:0)
从数据库中获取时间,并将其放在变量上。然后尝试以下代码:
如果您在服务器上运行Linux,请使用:
setlocale(LC_ALL, 'ru_RU.UTF-8');
echo strftime(); //PS down
您可以从here
了解如何使用此功能如果您使用的是Windows:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
setlocale(LC_ALL, 'russian');
答案 1 :(得分:0)
您应该运行这些查询,将它们放在一个SQL运行
中$sql = "
SET lc_time_names = 'ru_RU';
SELECT id, parent_id, name, comment,
DATE_FORMAT(date_add, '%d %M %Y') as date_add
FROM comment_common;";
如果我在phpMyAdmin中以这种方式运行它,我用正确的语言显示它:14 Сентября 2014
但是当我第一次运行第一个查询,然后是第二个查询时,我也有英文数据。
要获得所需的结果,您应该使用mysqli_store_result()
函数,因此正确的代码是:
<?php
header('Content-Type: text/html; charset=utf-8');
$dbc_utf8 = mysqli_connect ("localhost", "root", "", "tests");
mysqli_query($dbc_utf8, 'SET CHARACTER utf8');
mysqli_query($dbc_utf8, 'SET NAMES utf8');
/* Installing Russian locale Connection */
$sql = "
SET lc_time_names = 'ru_RU';
SELECT id, parent_id, name, comment,
DATE_FORMAT(date_add, '%d %M %Y') as date_add
FROM comment_common
";
if (mysqli_multi_query($dbc_utf8, $sql)) {
do {
/* store first result set */
if ($result = mysqli_store_result($dbc_utf8)) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['date_add'];
}
mysqli_free_result($result);
}
} while (mysqli_more_results($dbc_utf8) && mysqli_next_result($dbc_utf8));
}
?>
但是不太方便。看来代替SET lc_time_names = 'ru_RU'
,您应该使用SET GLOBAL lc_time_names = 'ru_RU'
使其在普通代码中运行,因此更好的选择应该是:
<?php
header('Content-Type: text/html; charset=utf-8');
$dbc_utf8 = mysqli_connect ("localhost", "root", "", "tests");
mysqli_query($dbc_utf8, 'SET CHARACTER utf8');
mysqli_query($dbc_utf8, 'SET NAMES utf8');
/* Installing Russian locale Connection */
mysqli_query($dbc_utf8, "SET GLOBAL lc_time_names = 'ru_RU'") ;
$sql = "
SELECT id, parent_id, name, comment,
DATE_FORMAT(date_add, '%d %M %Y') as date_add
FROM comment_common
";
$result = mysqli_query($dbc_utf8, $sql);
$row = mysqli_fetch_assoc($result);
echo $row['date_add'];
?>
然而,在这种情况下,您需要管理员权限,但我不知道为什么,但此代码在首次运行时无效,从第2天开始以俄语返回日期。