【问题标题】:sqldatabse not taking non english characterssqldatabse 不采用非英文字符
【发布时间】:2014-11-24 11:57:10
【问题描述】:

我正在尝试在我的 sqltable 中输入 हिन्दी。 我在表中将排序规则设置为 utf8_unicode_ci 当我在 php 页面中回显变量时,它显示 हिन्दी 但在数据库中,它会得到奇怪的值,例如 "& #2361;& #2367;न"

我的代码如下:

 <?php
include("connection.php");
mysqli_set_charset($con,'utf8');

$var=$_POST['var'];
$var1=$_POST['var1'];

$query="insert into test values('$var','$var1')";


if($result=mysqli_query($con,$query))
{
echo $var;
echo $var1;

echo "success";
}


?>

【问题讨论】:

    标签: php mysql unicode


    【解决方案1】:

    这些是您从浏览器获取的 HTML 实体,在任何浏览器中都显示为 Unicode 字符。

    即使您从数据库中读取它们只是为了以 HTML 显示它们(一切看起来都很好),最好不要在数据库中存在这种垃圾。

    在 HTML 表单中将表单作为 UTF-8 传递,并说服务器接受 UTF-8 回复:

    <form action="... .php" method="post" accept-charset="UTF-8">
    

    (我假设页面已经以 UTF-8 交付;它的 Content-Type。)

    $_POST 将保存纯 Unicode 字符而不是实体。


    <?php
    header("Content-Type: text/html; charset=utf-8");
    

    // 连接后立即 mysql_query("设置名称 utf8"); ... ?>

    【讨论】:

    • 感谢我在数据库中获得所需的输入,但无法检索并显示它显示???当我从 php 回显时
    • 你最后成功了吗?似乎最初您的 PHP 也没有作为 UTF-8 交付。还是它仍然是数据库定义?
    • 我成功地在数据库中获取了 utf-8 输入。但是当我检索它时不会显示它。它的显示???字符。
    • 我添加了一个 Content-Type 标头,它告诉浏览器字节是 UTF-8。但是,当出现问号时,数据库处理错误。添加了明确的数据库设置。
    【解决方案2】:

    使用适用于任何(大多数)语言的 8 位 UCS/Unicode 转换格式

    utf8_general_ci

    这可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2020-11-18
      相关资源
      最近更新 更多