php - 需要有关不受支持的字符的帮助

标签 php mysql utf-8 ascii

当我尝试获取数据库(mysql)中列值为(à¤1िंअी í的行时,我遇到了我认为是MySQL问题的问题•œêµì–´ اللغة الØ1رءÙØØ ),结果行似乎存在并且在 if 条件语句上为真。但是当我 var_dump 它时,它显示为空,而不是 null。

例如:(php/mysql)

输入数据:

  • id -> 1
  • 姓名 -> 鲍勃
  • 地址 -> हिंदी 한국어 हिंदी 한국어 ??? ???

表中存储的数据

  • [列]id = 1
  • [列]名称 =“鲍勃”

从mysql获取后的预期数据

  • id ->“1”
  • 姓名 -> “鲍勃”
  • 地址 ->\u00e0\u00a4\u00b9\u00e0\u00a4\u00bf\u00e0\u00a4\u201a\u00e0\u00a4\u00a6\u00e0\u00a5\u20ac\u00ed\u2022\u0153\u00ea\u00b 5\u00ad\u00ec\u2013\u00b4\u00d8\u00a7\u00d9\u201e\u00d9\u201e\u00d8\u00ba\u00d8\u00a9\u00d8\u00a7\u00d9\u201e\u00d8\u00b9\u00d8\u00b1\u0 0d8\u00a8\u00d9\u0160\u00d8

$mysql_result_row = array(
    "id" => 1, 
    "name" => "Bob",
    "address" => );

echo json_encode($mysql_result_row) // (shows nothing)
echo gettype($mysql_result_row) // array
echo $mysql_result_row['name'] // Bob
echo $mysql_result_row['address'] // (everything stops working, no php nor mysql error logs)


注释

  1. 上面的示例有 3 种不同的语言/字符集。
  2. हिंअी 是印地语
  3. í•œêµì–´ 是韩语
  4. اللغة الØ1Ø±Ø¡ÙŠØ 是阿拉伯语
  5. 不要问为什么单个列有 3 种不同的语言,因为我不知道
  6. 如果该地址栏中只有其中一种语言,则可以正常工作,没问题。只有当这 3 个结合起来时它才会停止工作

最佳答案

终于从这个引用文献中找到了解决方法:[ https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html][1]

解决方案:

  • 在涉及非英语值的值前面加上 N。 MySQL INSERT/UPDATE 示例:“INSERT INTO ... () VALUES('$id', '$name', N'$address')”
  • 在查询 INSERT/UPDATE/SELECT 查询之前,我首先查询:“SET CHARACTER SET utf8”

尽管问题中所述的“$mysql_result_row”问题仍然是一个谜,但它仍然像部分损坏的变量,因为它包含一个无法正确处理的字符。

关于php - 需要有关不受支持的字符的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59951791/

相关文章:

php - ereg() 到 preg_match() 怎么样?

php - 'router' - 如何使其正确?

Mysql 数据类型

python - 从 PyQt5 QPlainTextEdit 获取 Unicode 字符串

php - 如何在div html中编写条件语句?

php - CodeIgniter + Bootstrap 选项卡,重新加载不会返回到最后一个事件选项卡

php - Carbon - 为什么 addMonths() 改变月份的日期?

mysql - CakePHP HABTM 关系

php - 更新 PHP CMS 网站以完全支持 unicode/utf8

ios - 如何查看该字符串的真实内容?