Php mysql回归?
我有一个问题,当我试着回显西里尔文字时,它会返回像 这是密码Php mysql回归?,php,mysql,Php,Mysql,我有一个问题,当我试着回显西里尔文字时,它会返回像 这是密码 <? include('db.php'); $sql = "SELECT * FROM menu_items WHERE reference=1"; $result = $conn->query($sql); if ($result->num_rows > 0) { $rows = array(); while($row = $result-
<?
include('db.php');
$sql = "SELECT * FROM menu_items WHERE reference=1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$rows = array();
while($row = $result->fetch_object()) {
$rows[] = json_encode($row);
}
$items = implode(',',$rows);
echo '['.$items.']';
}else {
echo "ERROR";
}
?>
有什么想法吗
排序规则:utf8\U通用\U ci
和db.php:
<?
$servername = "localhost";
$username = "test";
$password = "Conqwe333!";
$conn=mysqli_connect($servername,$username,$password,"test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
在
之后工作您应该为每个连接设置排序规则:
您还可以执行sql
SET NAMES utf8;
但不推荐这样做
我认为问题是退后了一步,请尝试首先正确编码西里尔字母:在之前添加$sql
$conn->query('SET NAMES utf8');
你可以阅读更多关于它的内容
此外,您还需要为浏览器设置适当的标题。您可以通过多种方式来完成,例如在MetaHTML标记中或使用标题('Content-Type:text/html;charset=utf-8')代码>我假设您使用的是保加利亚语和UTF8,同样适用于俄语和其他语言,只需将“bg”更改为正确的字符串即可
我不建议您使用cp1251,因为它在apache mod_rewrite和其他类似工具中意外中断
您需要执行以下检查:
- 检查数据库/表排序规则是否为UTF8。它可能是utf8\u general\u ci或保加利亚语-差异最小,与排序更相关。(utf8\u常规\u ci完全可以)
- 检查是否在connect之后立即执行以下语句-
设置名称UTF8代码>。您可以执行$mysqli->query(“设置名称utf8”)代码>
- 确保你有合适的“标签”。这里有一个例子:
Нов сайт :)
mysql表格菜单项的排序规则是什么?文件上是否有正确的“bom”和标题?不要使用短标记尝试调用SET NAMES='UTF8'代码>连接后的sql查询。@holodoc我不这么认为。再读一遍你喜欢的文档,更仔细地去做,像$conn->set_charset(“utf8”);工作!对不起,我的集合名称语法有误。无论如何,有一个更好的方法:)我只是使用$conn->set_字符集(“utf8”);没关系,但如果不起作用,请尝试使用设置名称utf8
。集合名称不仅会更改字符集,还会同时更改3-4个配置值。另外请注意,如果未找到正确的HTML标记,则不会显示西里尔字母,除非您单击浏览器的“字符集”菜单。
$conn->query('SET NAMES utf8');