【问题标题】:Assigning array causes syntax error with certain data分配数组会导致某些数据出现语法错误
【发布时间】:2017-10-12 08:20:23
【问题描述】:

我正在制作一个脚本,该脚本使用 youtube api 搜索视频并将其中一些视频的详细信息存储在数据库中。 我使用javascript获取数据,然后使用php将其存储在mysql数据库中。

它在大多数情况下都可以正常工作,但是当我在这一行将数据分配给 javascript 数组时,某些字符似乎会导致语法错误:

var videoList = <?=$videoList; ?>;

特别是当我分配它而不是当我使用它时,我尝试在分配后立即重置数组,但它仍然会导致错误。

我发现似乎导致错误的字符串之一是:(我知道这行之前导致了问题,因为当我手动删除它时它开始工作)

Hoppas ni mÃ¥r jätte bra idag â¤ï¸undrar om ni vill att jag ska göra en annan video sÃ¥ fÃ¥r ni jätte Järna kommentera deâ

我在数据库中使用“utf8mb4_unicode_520_ci”,在我的网站上使用 charset="UTF-8"。我不确定是因为 charset 还是某些字符无法处理,也许我需要使用某些函数来转换字符。

知道如何解决吗?

更新:

我确实像 Dan Miller 建议的那样,但它根本没有用。

我也尝试了阿德里亚诺波利斯的建议。我更改了表和列的排序规则,并且已经在标题中设置了字符集。更改排序规则后仍然会导致问题。

【问题讨论】:

  • 用引号括起来var videoList = "&lt;?=$videoList; ?&gt;";
  • 不,不要用引号括起来。使用合适的编码器来构建合适的 JS 文字 var videoList = &lt;?=json_encode($videoList); ?&gt;;
  • 我在php中使用json_encode:return json_encode($return_arr);

标签: javascript php mysql arrays


【解决方案1】:

假设您使用的是 MB4? 将您的 cols 从 utf8mb4_unicode_520_ci 更改为 utf8mb4_general_ci,当然要确保您的标题中有 &lt;meta charset="utf-8"&gt; 元标记。这适用于所有情况。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多