【问题标题】:Russian Language in PHP HTMLPHP HTML 中的俄语
【发布时间】:2014-05-06 07:56:08
【问题描述】:

我在 PHP 和 MySql 中保存了俄语。这是示例字符тыуиппюлкйчг

我在保存时在 PHP 中使用了这些行

mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'");

我检查了数据库,它保存成功..现在我想在 EDITOR 中将它显示给用户,它返回给我????????????

这是我如何从表格中获取并显示它的代码

$.getJSON("getSingleRow.php?id="+id+"&type="+type, function(json){ 
 $("#"+key).val(val);
});

在 getSingleRow.php 我有这个代码

echo json_encode($russian);

注意:当我直接运行getSingleRow.php时,它也会打印????????????

更新: 首先,它成功保存在数据库中,我可以看到有俄语。

我有两页要获取它。一页有编辑器,我在顶部有这一行

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

在 php 中我也有这一行

header('Content-Type: text/html;charset=utf-8');

其他文件在我得到它的服务器端...getSingleRow.php 在这个页面的顶部我有

header('Content-Type: text/html;charset=utf-8'); 

最后我有这个代码

echo json_encode($russian);

已应用此问题的所有答案,但没有成功

即使很简单,这段代码也不起作用

<?php
header('Content-Type: text/html;charset=utf-8');
echo "тыуиппюлкйчг ";
?>

【问题讨论】:

  • 如果你打印你的数据库得到输出...它工作正常吗?我从数据库中获取了一些麻烦。
  • 查看我的更新答案。 mysql_query("设置名称 UTF8");我认为你错了:-)
  • 我已成功保存在数据库中。唯一的问题是查看中...是的,我应用了您的所有建议,但没有工作
  • 当您通过 phpmyadmin 或其他方式在查询中进行选择时,输出是否正确?你有没有通过将php文件设置为utf-8来检查是否可以工作?
  • 没有那个时候也显示?????????

标签: php mysql json cyrillic


【解决方案1】:

在要显示的页面中放一个header charset=utf-8。

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

【讨论】:

  • 请查看更新后的问题...我已经有了这条线...但无法正常工作
【解决方案2】:
  1. 确保数据库字符集/排序规则为 UTF-8

  2. 在页面上插入这些俄语字符(表单、textarea ),通过将 Content-Type 设置为,确保编码为 UTF-8 文本/html;字符集=utf-8。直接在表格中输入俄语文本 输入。

  3. 在处理此表单的处理页面上,将其插入 数据库,请确保执行 SET NAMES utf8 以便将其存储为 UTF-8 在插入数据之前,预先在单独的查询中。

  4. 在视图中呈现数据库中的内容时,请确保 Content-Type 是 text/html; charset=utf-8.

确保内容类型不是 windows-1251 或 iso-8859-1/latin1。确保数据库字符集/排序规则不是 ISO-8859-1/Latin1。

发件人:MySQL - Russian characters display incorectly

【讨论】:

  • 对于俄语或俄语-英语网站,通常使用 utf8_general_ci 排序规则。如果要使用带有特殊拉丁字符的语言(例如德语),则需要 utf8_unicode_ci。
  • 我已成功保存在数据库中...我可以在那里看到...但是当我想取回它时它给我?????请查看我更新的问题
【解决方案3】:

数据库上的排序规则必须设置为西里尔字母才能接受俄语字符。我最终使用了 CYRILLIC_GENERAL_CI_AS 排序规则集。

查看此链接:http://www.davecheung.com/blogpost/converting-a-sql-server-2005-database-to-accept-russian-charactersmultilingual-characters/

【讨论】:

    【解决方案4】:

    您是否尝试过 json_encode() 中的 JSON_UNESCAPED_UNICODE 参数?

    json_encode($russian, JSON_UNESCAPED_UNICODE)
    

    仅适用于 PHP 5.4.0

    如果你的版本是以前的,试试这个:

    <?php
    $str = 'russian - русский';
    $str = json_encode($str);
    $str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
    function ($matches) {
        $sym = mb_convert_encoding(
                pack('H*', $matches[1]), 
                'UTF-8', 
                'UTF-16'
                );
        return $sym;
    },
    $str
    );
    echo $str . PHP_EOL;
    

    【讨论】:

    • 警告:json_encode() 需要 1 个参数,2 个在
    【解决方案5】:

    请在上面显示数据的位置设置mysql_set_charset('utf8');

    【讨论】:

      【解决方案6】:

      使用此代码后

      $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
      

      您必须在 MySQL 中为俄语添加此代码。

      mysqli_query($conn, "set names utf8");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 1970-01-01
        • 2011-01-08
        • 2022-11-18
        相关资源
        最近更新 更多