Mar*_*ers 11
$tmp = iconv('YOUR CURRENT CHARSET', 'UTF-8', $string);
Run Code Online (Sandbox Code Playgroud)
要么
$tmp = utf8_encode($string);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,你的数据库中最后会出现一个空字符串.我可以理解你最终会在你的数据库中出现一些装腔作势但没有任何东西(空字符串)很奇怪.
我只是在我的控制台中键入了这个:
iconv -l | grep -i ansi
Run Code Online (Sandbox Code Playgroud)
它告诉我:
ANSI_X3.4-1968
ANSI_X3.4-1986
ANSI_X3.4
ANSI_X3.110-1983
ANSI_X3.110
MS-ANSI
Run Code Online (Sandbox Code Playgroud)
这些是您的当前CHARSET的可能值 如前所述,当您的输入字符串包含UTF中允许的字符时,您不需要转换任何内容.
当您不想省略字符时更改UTF-8 // TRANSLIT中的UTF-8但是用类似的替换它们(当它们不在UTF-8集中时)
"ANSI"并不是真正的字符集.这是一种简短的说法,"无论charset是创建数据的计算机中的默认设置".所以你有一个双重任务:
对于#2,我通常很满意,iconv()
但utf8_encode()
如果源数据恰好使用ISO-8859-1,也可以完成工作.
看起来你不知道你的数据使用什么字符集.在某些情况下,如果您通过Microsoft Windows在此类区域中使用的默认编码了解用户的国家/地区和语言(例如,西班牙/西班牙语),则可以弄明白.