如何将Unicode的HTML代码转换为Real Unicode Character

时间:2013-04-05 05:39:09

标签: php unicode

是否有任何可以转换的php函数

ابب

等同于unicode字符

ت ب ا

我已经google了很多,但我认为没有任何PHP内置功能可用于此目的。实际上,我想将用户提交的注释(以unicode字符存储)存储到mysql数据库中。但它以这种格式ابب存储在mysql数据库中。我也在mysql查询中使用SET NAMES 'utf8'。输出是真正的unicode字符,很好,但mysql中的插入格式为ابب,我不想要。 任何解决方案??

3 个答案:

答案 0 :(得分:1)

我用谷歌搜索了一个非常有趣的解决方案here

我也尝试过,我认为它的工作

<?php
    $trans_tbl = get_html_translation_table(HTML_ENTITIES);
    foreach($trans_tbl as $k => $v)
    {
        $ttr[$v] = utf8_encode($k);
    }
    $text = '&#1575;&#1576;&#1576';
    $text = strtr($text, $ttr);
    echo $text;
?>

对于mysql解决方案,您可以将字符集设置为

$mysqli = new mysqli($host, $user, $pass, $db);

if (!$mysqli->set_charset("utf8")) {
die("error");
}

答案 1 :(得分:1)

如果你

1 - 将您的html页面的lang编码设置为utf-8,其中包括您的表单
2 - 仅使用表单输入相关MySQL数据库表的输入
3 - 将所有排序规则设置为MySQL(表格和行排序规则)中的utf8_unicode_ci 4 - 如果您有预约,您还可以将MySQL DB排序规则作为utf8_unicode_ci

那么你也不会在你的mySQL记录中看到实体

这是我使用的解决方案,我的母语也有很多unicode字符。

下面我介绍我的数据库连接php代码&amp;建议(使用准备好的陈述;请检查http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

//mysql bağlantısı
global $db_baglanti;
$db_baglanti = new mysqli(vt_host, vt_user, vt_password, vt_name);
if ($db_baglanti->connect_errno) 
{
    echo "MySQL bağlantısı kurulamadı: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$db_baglanti->set_charset("utf8")) 
{
    printf("utf8 karakter setinin yüklenmesinde problem oluştu: %s\n", $db_baglanti->error);
} 
else 
{
    $db_baglanti->set_charset("utf8");
}

答案 2 :(得分:0)

我认为您应该能够使用mysql_set_charset() http://php.net/manual/en/function.mysql-set-charset.php设置mysql连接编码,这样当您从数据库中检索这些并显示它们时,它们应该没问题。

根据php.net“从PHP 5.5.0开始,这个扩展已被弃用,将来会被删除。相反,应该使用MySQLi或PDO_MySQL扩展。”