Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Php UTF-8解码umlauts偶尔失败_Php_Mysql_Sql_Encoding_Utf 8 - Fatal编程技术网

Php UTF-8解码umlauts偶尔失败

Php UTF-8解码umlauts偶尔失败,php,mysql,sql,encoding,utf-8,Php,Mysql,Sql,Encoding,Utf 8,好吧,这很奇怪,我真的不知道是什么导致我的问题: 工作流: 我有一个带有utf-8列的常规mysql数据库 我通过一个简单的输入字段将带有德语umlauts的文本插入到该列中 我通过一个简单的查询读取并显示这些行 我的问题: 有时,也只是有时,会显示问号,而不是umlauts。 奇怪的是,它只是用某些词,而不是所有的词。 例如:“Gummibären”导致“ä”的问号,但“Gumibären”(注意单个“m”)显示正确。所以,我真的不能在这里找到一个模式 该列位于utf8\u genera

好吧,这很奇怪,我真的不知道是什么导致我的问题:

工作流:

  • 我有一个带有utf-8列的常规mysql数据库
  • 我通过一个简单的输入字段将带有德语umlauts的文本插入到该列中
  • 我通过一个简单的查询读取并显示这些行
我的问题:

有时,也只是有时,会显示问号,而不是umlauts。 奇怪的是,它只是用某些词,而不是所有的词。 例如:“Gummibären”导致“ä”的问号,但“Gumibären”(注意单个“m”)显示正确。所以,我真的不能在这里找到一个模式

  • 该列位于
    utf8\u general\u ci
  • HTML文件使用
  • PHP文件本身是用utf-8编码的
查询是:

mysqli_query("SET NAMES 'utf8'"); 
$var = "SELECT * FROM table ORDER BY id DESC";
同样奇怪的是,“ä”并没有被1个问号所取代,而是被2个问号所取代,就好像有2个字符没有编码而不是仅仅1个


有什么我遗漏的吗?

我发现了。它实际上与读取或将utf写入数据库无关,而是与PHP函数
wordwrap()
有关。如果
wordwrap()
与多字节unicode字符(如“ä”和类似字符)一起使用,则会弄乱字符串。 我是在这个的帮助下弄明白的:还有这个:——供将来参考


谢谢你的意见

警告-mysql_query从PHP 5.5.0开始,此扩展已被弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。可能重复上面链接的QA,“如果数据是从数据库中提取的,可以使用mb_detect_encoding()验证其编码。”谢谢,我阅读了这篇文章并做了一些研究。不幸的是,这对我的问题没有多大帮助。奇怪的是,某个umlaut的每一次出现都显示在右边,而不是作为一个�. 如果我设置mysqli_set_charset($con,“utf8”);它正在显示2�� 如果不是,则显示单个�.mb_detect_编码显示ASCII码