如何转换';u00e9';在mysql或php中转换为utf8字符?
我正在对一些正在导入mysql的凌乱数据进行数据清理 数据包含“伪”unicode字符,这些字符实际上作为“u00e9”等嵌入到字符串中 因此,一个领域可能是……”Jalostotitlu00e1n' 我需要删除笨拙的“u00e1n”,并用相应的utf字符替换它 我可以在mysql中使用substring和CHR,但是我通过PHP预处理数据,所以我也可以在那里做 我已经知道如何配置mysql和php来处理utf数据。问题其实就在于我导入的源数据如何转换';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
谢谢有办法。用它们的HTML表示替换所有的
uxxx
,并执行HTML\u实体\u解码()
即echo html_entity_decode(“Jalostotitlá;n”)代码>
表单u1234
中的每个UTF字符都可以用HTML打印为和#x1234代码>。但是进行替换是相当困难的,因为如果没有其他字符标识UTF序列的开头,可能会有很多误报。一个简单的正则表达式可以是
preg_replace('/u([\da-fA-F]{4})/'、'\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})/'、'\1;',$str
(请注意,反斜杠已转义)不!不要从\u
中删除反斜杠,因为它可以用作标识符。请使用修改的正则表达式preg\u replace('/\\u([\da-fA-F]{4})/','\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);
}