我是PHP和字符转换的新手,所以我的问题标题可能会误导。
我正在解析一个网站,在一个字符串中,我想解析,是一个特殊的字符,如下所示:
<tag>Hello! My name is ženk!</tag>
现在这是我将插入到数据库中的文本,因此我需要ž
转换为字符' ž
'(其 ASCII 代码)。
使用html_entity_decode()
并显式指定字符集:
$string = html_entity_decode($string, ENT_QUOTES, "utf-8");
供将来参考:PHP 字符串函数
尝试下面的代码。
$input = "Hello! My name is ž";
$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input);
echo $output;
希望这有帮助。
使用以下代码解决此问题
$string_to_convert="your string";
$utf 8_converted_string=utf8_encode($string_to_convert);
echo $utf 8_converted_string//输出 utf8 字符
问题不在于在浏览器中显示数据,因为我尝试了以下内容并且效果很好:
<?php echo '<tag>Hello! My name is ženk!</tag>'; ?>
问题不在于将数据保存在数据库中。
问题在于从数据库中检索此字符。
因此,您需要在查询数据库之前将格式设置为 UTF-8:
$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");
如果您使用的是 mysqli:
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
if(mysqli_connect_errno()){
printf("DB Connect failed: %s'n", mysqli_connect_error());
exit();
}
// Add the UTF-8 Support
$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");
// Query the database
$mysqli->query("SELECT column FROM `table` ...");