我正在尝试从数组中打印数据:
$card_list = Array(Array("Red", "あかい"), Array("Blue", "あおい"), Array("Green", "みどり"));
foreach ($card_list as $card_row)
{
print $card_row[0] . " | " . $card_row[1] . "<br />";
}
然而,Chrome和IE。两个输出:
Red | ???
Blue | ??
Green | ???
预期输出为:
Red | あかい
Blue | あおい
Green | みどり
我尝试添加以下内容以使其起作用(从过去的答案到类似问题),但无济于事。
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
<meta charset="utf-8" />
是否可以在不转移输入的情况下进行打印?我真的不想那样做。
根据要求,这是我目前正在使用的所有相关代码
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
$card_list = Array(Array("Red", "あかい"), Array("Blue", "青い"), Array("Green", "みどり"));
?>
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="flashcard_block">
<?php
foreach ($card_list as $card_row)
{
print $card_row[0] . " | " . $card_row[1] . "<br />";
}
?>
</div>
</body>
</html>
答案 0 :(得分:1)
添加适当的<meta charset="" />
或<meta http-equiv="Content-Type" />
标记,用于声明所述HTML文档的内容类型。
在php.ini
内设置默认字符集(参见SO的Q&amp; A:Setting PHP default encoding to utf-8?)
.php
文件不上传的方式可能会在未重新构建的Unicode字符上将字符更改为???
。
所有这一切当然都取决于你不是从数据库中读取,这将是问题的一个额外层面,尽管这是一条黄金法则:
开发过程的所有图层必须与同一个Charset对齐。
答案 1 :(得分:0)
首先,我认为确定哪些字符集是在发送到浏览器时编码的内容更好。
如果它们由Shift-jis编码并强制浏览器在utf-8中显示它,它将显示一些奇怪的字符。
虽然您知道它们被编码的字符集是什么,但您可以使用mb_convert_encoding
将它们转换为您想要的字符集。
答案 2 :(得分:-1)
将其放在代码的开头
mysql_set_charset("UTF8", $conn);