php - 如何从ajax形式获取非英文字符到MySQL

标签 php javascript utf-8 character-encoding iso-8859-1

我有一个使用 jQuery form plugin 提交数据的表单。从那里它经过一些服务器端处理并最终存储在 MySQL 数据库中。

提交这些字符áâãäï后,它们将作为áââäï¤â'发送到服务器(在访问数据库之前)。日语字符等也会发生同样的情况。

我已经尝试了 UTF-8 和 ISO-8859-1 的表单编码、页面编码、php 服务器端编码和 db 编码。还是没有运气。

最佳答案

在内部,JavaScript 使用 UTF-16 字符串,并且诸如 encodeURIComponent() 之类的函数将字符编码为 UTF-8,因此问题可能不是 JavaScript 代码。问题可能出在您的 PHP 代码中。

  • 服务器发送的每个页面(包括表单所在的页面)都必须具有 header Content-type: text/html;charset=UTF-8。您可以使用 Firebug 的网络面板进行检查。

  • 始终set the character encoding在进行任何查询之前先检查您的 MySQL 连接。否则,MySQL会将UTF-8字符串的每个字节解释为Latin-1字符,这很容易导致您所描述的情况。使用如下代码:

    mysql_query("SET NAMES 'utf8'");    // works in old versions of PHP (< 5.2)
    mysql_set_charset('utf8',$conn);    // works in PHP 5.2+
    
  • 请记住,一些(不是全部)PHP 字符串函数将 mangle Unicode text .

关于php - 如何从ajax形式获取非英文字符到MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809890/

相关文章:

php - PHP 有时会忽略函数重新声明吗?

javascript - 在 NodeJS 中提供 mp3 文件以用于音频标签

Python ASCII 编解码器在写入 CSV 时无法编码字符错误

mysql - 我想了解 Windows 智能引号如何变成 "’"

php - 使用完整的密码将用户从 Keycloak 迁移到 LDAP

javascript - JQuery .before() 添加 html block 转义

javascript - 使用ajax抓取表单数据

javascript - RequireJS - 依赖参数与定义中的要求等效

javascript - 为什么我的 JQuery 淡入淡出 slider 不适用于任何 IE 类型?

php - 无法让 PHP 接受漂亮的 Python 汤脚本中的 POUND 符号