在mysql数据库中插入和获取不同的语言

Posted

技术标签:

【中文标题】在mysql数据库中插入和获取不同的语言【英文标题】:insert and fetch different language in mysql database 【发布时间】:2015-04-28 16:20:25 【问题描述】:

我有两个文件:config.php 和 add.php 我正在尝试在数据库中插入英语和俄语数据。

config.php 的代码

<?php
header('Content-Type: text/html; charset=utf-8' );
$link = mysql_connect('asd','asd','asd') or die('Cannot connect to the DB');
mysql_select_db('asd',$link) or die('Cannot select the DB');

mysql_query("set character_set 'utf8'");
mysql_set_charset("utf8", $link);

echo mysql_client_encoding($link);
printf( "MySQL server version: %s\n", mysql_get_server_info());
?>

配置中最后两行的输出是:

utf8
MySQL server version: 5.1.72-rel14.10

从 add.php 页面我得到一个数组:

Array
(
    [0] => Array
        (
            [message] => Registered
            [detail] => Array
                (
                    [id] => 54
                    [name] => Настройки
                )
        )
)       

现在我尝试将其转换为 JSON

echo json_encode($posts,128);

但我得到一个输出为 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 的名称,数据库排序规则在 utf8_general_ci 中,数据库中的条目格式正确,但我无法获取正确格式的数据。

注意:请忽略SQL,我稍后会更改。

【问题讨论】:

如果函数json_encode()对字符串进行编码应该没有问题,在用json_decode()读取它之后你应该得到原始的UTF-8字符串,不是吗? @martinstoeckli 你能告诉我怎么做吗 函数 json_encode() 用于准备 Ajax 请求的答案。在客户端页面上,您将使用函数 json_decode() 来读取 Ajax 答案,然后可以使用 UTF-8 字符串。 json_decode(json_encode('Настройки')) 应该导致 'Настройки' @martinstoeckli 名称只是数组的一部分,我需要显示整个数组而不是单个值,可以有多个具有不同语言的值 那么你为什么要使用 json_encode() 呢,它和数据库有什么关系呢?如果您只想显示变量的内容,您也可以使用var_dump() 或print_r()。 【参考方案1】:

你可以试试:

echo json_encode($posts, JSON_UNESCAPED_UNICODE);

【讨论】:

我试过这个但得到一个错误提示,警告:json_encode() 期望参数 2 很长,给定字符串 需要 PHP 5.4.0 我的服务器说它拥有 php 版本 5.5.21 CGI 奇怪..可以直接加整数:json_encode($posts, 256); php.net/manual/en/json.constants.php

以上是关于在mysql数据库中插入和获取不同的语言的主要内容,如果未能解决你的问题,请参考以下文章

MySql数据库语句用法

如何将不同的逗号分隔值插入mysql中的不同列

从 2 个不同的数据库(MySQL 和 SQL)在 Listview 中插入值

MySQL AutoIncrement--PXC集群批量插入操作获取自增ID异常问题

如何将来自三个 Perl 数组的数据插入到单个 MySQL 表中?

使用 Laravel 在 MySql 中插入/更新/删除和获取 JSON