在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数据库中插入和获取不同的语言的主要内容,如果未能解决你的问题,请参考以下文章
从 2 个不同的数据库(MySQL 和 SQL)在 Listview 中插入值
MySQL AutoIncrement--PXC集群批量插入操作获取自增ID异常问题