Android: PHP UTF8
Android: PHP UTF8
我有一个 PHP (5.3) 脚本,它从数据库中获取数据并通过 JSON 将其传递给 android。 UTF-8 字符仅适用于 Ä、Ü 等。
但不是俄文和中文字母!
Table
$createTableMessage = $db->prepare("CREATE TABLE IF NOT EXISTS message (
`id` int(11) unsigned NOT NULL auto_increment,
`fromusername` varchar(255) NOT NULL default '',
`tousername` varchar(255) NOT NULL default '',
`imageid` int(11) default null,
`text` varchar(255) default null,
`ispublic` int(11) default 0,
PRIMARY KEY (`id`))
CHARACTER SET utf8 COLLATE utf8_general_ci");
函数'Send message'
...
$answerarray[] = array(
"id" => $row['id'],
"countdown" => $row['-1'],
"answerText" => $row['text'],
"answerusername" => $row['fromusername'],
"filename" => $row[' '],
"country" => $row['country']
);
utf8_encode_deep($answerarray);
echo json_encode(array('answer'=>$answerarray));
函数utf8_encode_deep(来自网络)
function utf8_encode_deep(&$input) {
if (is_string($input)) {
$input = utf8_encode($input);
} else if (is_array($input)) {
foreach ($input as &$value) {
utf8_encode_deep($value);
}
unset($value);
} else if (is_object($input)) {
$vars = array_keys(get_object_vars($input));
foreach ($vars as $var) {
utf8_encode_deep($input->$var);
}
}
}
要成功传送 utf8 字符,您需要确保
- 数据库 table 和字段,
- 与数据库的连接,
- php 文件本身的编码
- content-type header 你输出的文件
都是utf8。
如果在 mysql 中手动查询结果时得到正确的字符,则问题很可能出在 3 或 4.
json 编码如果一开始就正确,就不会破坏编码。您可以在将其转换为 json 字符串之前检查从 mysql 获得的数据是否正确(在 PHP 中使用 print_r)。
我有一个 PHP (5.3) 脚本,它从数据库中获取数据并通过 JSON 将其传递给 android。 UTF-8 字符仅适用于 Ä、Ü 等。
但不是俄文和中文字母!
Table
$createTableMessage = $db->prepare("CREATE TABLE IF NOT EXISTS message (
`id` int(11) unsigned NOT NULL auto_increment,
`fromusername` varchar(255) NOT NULL default '',
`tousername` varchar(255) NOT NULL default '',
`imageid` int(11) default null,
`text` varchar(255) default null,
`ispublic` int(11) default 0,
PRIMARY KEY (`id`))
CHARACTER SET utf8 COLLATE utf8_general_ci");
函数'Send message'
...
$answerarray[] = array(
"id" => $row['id'],
"countdown" => $row['-1'],
"answerText" => $row['text'],
"answerusername" => $row['fromusername'],
"filename" => $row[' '],
"country" => $row['country']
);
utf8_encode_deep($answerarray);
echo json_encode(array('answer'=>$answerarray));
函数utf8_encode_deep(来自网络)
function utf8_encode_deep(&$input) {
if (is_string($input)) {
$input = utf8_encode($input);
} else if (is_array($input)) {
foreach ($input as &$value) {
utf8_encode_deep($value);
}
unset($value);
} else if (is_object($input)) {
$vars = array_keys(get_object_vars($input));
foreach ($vars as $var) {
utf8_encode_deep($input->$var);
}
}
}
要成功传送 utf8 字符,您需要确保
- 数据库 table 和字段,
- 与数据库的连接,
- php 文件本身的编码
- content-type header 你输出的文件
都是utf8。 如果在 mysql 中手动查询结果时得到正确的字符,则问题很可能出在 3 或 4.
json 编码如果一开始就正确,就不会破坏编码。您可以在将其转换为 json 字符串之前检查从 mysql 获得的数据是否正确(在 PHP 中使用 print_r)。