Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换';u00e9';在mysql或php中转换为utf8字符?_Php_Mysql_Unicode_Character Encoding_Utf - Fatal编程技术网

如何转换';u00e9';在mysql或php中转换为utf8字符?

如何转换';u00e9';在mysql或php中转换为utf8字符?,php,mysql,unicode,character-encoding,utf,Php,Mysql,Unicode,Character Encoding,Utf,我正在对一些正在导入mysql的凌乱数据进行数据清理 数据包含“伪”unicode字符,这些字符实际上作为“u00e9”等嵌入到字符串中 因此,一个领域可能是……”Jalostotitlu00e1n' 我需要删除笨拙的“u00e1n”,并用相应的utf字符替换它 我可以在mysql中使用substring和CHR,但是我通过PHP预处理数据,所以我也可以在那里做 我已经知道如何配置mysql和php来处理utf数据。问题其实就在于我导入的源数据 谢谢有办法。用它们的HTML表示替换所有的uxxx

我正在对一些正在导入mysql的凌乱数据进行数据清理

数据包含“伪”unicode字符,这些字符实际上作为“u00e9”等嵌入到字符串中

因此,一个领域可能是……”Jalostotitlu00e1n' 我需要删除笨拙的“u00e1n”,并用相应的utf字符替换它

我可以在mysql中使用substring和CHR,但是我通过PHP预处理数据,所以我也可以在那里做

我已经知道如何配置mysql和php来处理utf数据。问题其实就在于我导入的源数据


谢谢

有办法。用它们的HTML表示替换所有的
uxxx
,并执行
HTML\u实体\u解码()

echo html_entity_decode(“Jalostotitlá;n”)

表单
u1234
中的每个UTF字符都可以用HTML打印为
和#x1234。但是进行替换是相当困难的,因为如果没有其他字符标识UTF序列的开头,可能会有很多误报。一个简单的正则表达式可以是


preg_replace('/u([\da-fA-F]{4})/'、'&#x\1;'、$str)
我的twitter时间线脚本将特殊字符如é返回到\u00e9中,因此我去掉了反斜杠并使用了@rubbude his preg_replace

// Fix uxxxx charcoding to html
$text = "De #Haarstichting is h\u00e9t medium voor alles Into:  De #Haarstichting is hét medium voor alles";
$str     = str_replace('\u','u',$text);
$str_replaced = preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str);

echo $str_replaced;
这对我来说很有效,它变成:
De#Haarstichting是一家中等规模的公司
进入: 哈尔斯蒂辛是一个中等职业者

/* 用于将utf8 html转换为ansi的函数php */


没有“UTF-8字符”这样的东西。也许您的意思是“使用该代码点对Unicode字符进行UTF-8编码”。@Ignacio确实如此,但我会将“UTF-8字符”定义为“编码Unicode字符的一个、两个、三个或四个字节的序列”。这是一个有效的定义吗?@deceze:从技术上讲,这就是所谓的“UTF-8序列”。谢谢,这是一个我没有想到的简单解决方案。我认为使用它是安全的,因为我试图修复的数据中不应该有任何数字。他们这样做的唯一原因是因为混乱的UTF,所以这些应该很容易识别小心!除非您的数据确实受到限制,否则您无法可靠地从如此糟糕的数据损坏中恢复。例如,将任何u-hex-hex-hex序列作为损坏的Unicode转义将把单词“consuved”变成“pers”귭”...@正确,这就是为什么我写它不太容易,因为“误报”。有标识符非常重要。我的twitter时间轴脚本将特殊字符如é返回到\u00e9中,这样我就可以使用反斜杠作为标识符了,对吗?是的,这比没有标识符要好得多。因此,您可以将正则表达式修改为
preg_replace('/\\u([\da-fA-F]{4})/'、'&#x\1;',$str
(请注意,反斜杠已转义)不!不要从
\u
中删除反斜杠,因为它可以用作标识符。请使用修改的正则表达式
preg\u replace('/\\u([\da-fA-F]{4})/','&#x\1;',$str)
insteadRight,这就是我需要的。当然,我的剥离是错误的,它剥离了我唯一的标识符。谢谢@rabbude我今晚正在测试它,并将用你的preg\u replace更新这个答案。Right@rabbude,现在我记得为什么我自己没有使用\\u:
警告:preg\u replace()[function.preg replace]:编译失败:PCRE不支持\L、\L、\N{name}、\U或偏移量1处的\U
抱歉,这可能是我的错误,请尝试双重转义:
preg\U replace('/\\\\U([\da-fA-F]{4})/'&\x\1;',$str)
public static function Utf8_ansi($valor='') {

    $utf8_ansi2 = array(
    "\u00c0" =>"À",
    "\u00c1" =>"Á",
    "\u00c2" =>"Â",
    "\u00c3" =>"Ã",
    "\u00c4" =>"Ä",
    "\u00c5" =>"Å",
    "\u00c6" =>"Æ",
    "\u00c7" =>"Ç",
    "\u00c8" =>"È",
    "\u00c9" =>"É",
    "\u00ca" =>"Ê",
    "\u00cb" =>"Ë",
    "\u00cc" =>"Ì",
    "\u00cd" =>"Í",
    "\u00ce" =>"Î",
    "\u00cf" =>"Ï",
    "\u00d1" =>"Ñ",
    "\u00d2" =>"Ò",
    "\u00d3" =>"Ó",
    "\u00d4" =>"Ô",
    "\u00d5" =>"Õ",
    "\u00d6" =>"Ö",
    "\u00d8" =>"Ø",
    "\u00d9" =>"Ù",
    "\u00da" =>"Ú",
    "\u00db" =>"Û",
    "\u00dc" =>"Ü",
    "\u00dd" =>"Ý",
    "\u00df" =>"ß",
    "\u00e0" =>"à",
    "\u00e1" =>"á",
    "\u00e2" =>"â",
    "\u00e3" =>"ã",
    "\u00e4" =>"ä",
    "\u00e5" =>"å",
    "\u00e6" =>"æ",
    "\u00e7" =>"ç",
    "\u00e8" =>"è",
    "\u00e9" =>"é",
    "\u00ea" =>"ê",
    "\u00eb" =>"ë",
    "\u00ec" =>"ì",
    "\u00ed" =>"í",
    "\u00ee" =>"î",
    "\u00ef" =>"ï",
    "\u00f0" =>"ð",
    "\u00f1" =>"ñ",
    "\u00f2" =>"ò",
    "\u00f3" =>"ó",
    "\u00f4" =>"ô",
    "\u00f5" =>"õ",
    "\u00f6" =>"ö",
    "\u00f8" =>"ø",
    "\u00f9" =>"ù",
    "\u00fa" =>"ú",
    "\u00fb" =>"û",
    "\u00fc" =>"ü",
    "\u00fd" =>"ý",
    "\u00ff" =>"ÿ");

    return strtr($valor, $utf8_ansi2);      

}