PDO + MySQL 和损坏的 UTF-8 编码 [重复]

2024-02-02

我在 PHP 中将 PDO 库与 MySQL 数据库一起使用,但是如果我插入任何以 UTF-8 编码的数据(例如阿拉伯单词),它就会插入到数据库中,但作为?????????.

在我自己的框架中,创建 PDO 连接后,我发送两个查询 -SET NAMES utf8 and SET CHARACTER SET utf8。还是不行。

Example:

loadclass('PDO', array(
    sprintf(
        'mysql:host=%s;port=%s;dbname=%s',
        confitem('database', 'host'),
        confitem('database', 'port'),
        confitem('database', 'name')
    ),
    confitem('database', 'username'),
    confitem('database', 'password'),
    array('PDO::ATTR_PERSISTENT' => confitem('database', 'pconnect'))
));
$this->query('SET NAMES ' . confitem('database', 'charset'));
$this->query('SET CHARACTER SET ' . confitem('database', 'charset'));

解决方法:使用json_encode函数在将数据插入数据库之前转换数据,并使用json_decode获取后对其进行解码。我现在就是这样做的。


Warning:此答案适用于 PHP 5.3.5 及更低版本。请勿将其用于 PHP 版本 5.3.6(2011 年 3 月发布)或更高版本。

与之比较帕莱克的回答here https://stackoverflow.com/a/21373793/367456.


Use:

$pdo = new PDO( 
    'mysql:host=hostname;dbname=defaultDbName', 
    'username', 
    'password', 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") 
); 

它在 PDO 连接上强制使用 UTF-8。这对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PDO + MySQL 和损坏的 UTF-8 编码 [重复] 的相关文章

随机推荐

  • 下拉当前索引 onchange

    有一个包含 5 个选项的下拉菜单 当前 选择了选项 2 用户现在选择了选项 4 onchange 事件被触发 该事件被 JS 函数捕获 监听选择上的 onchange 在 JS 函数中 我可以使用以下命令轻松检查用户选择的选项的索引选定索引
  • 使用注释移动 Google 图表列注释位置:线

    使用下面的示例 是否可以移动注释 以便在使用时它们全部出现在图表底部的相同 静态 位置style line 这使得注释垂直阅读 google charts load current callback function drawChart w
  • 我可以向现有 ATL COM 项目添加 MFC 支持吗

    我使用 ATL COM Object 创建了一个 Shell 扩展 但在创建过程中我没有添加MFC支持 我现在可以更改设置以添加 MFC 支持吗 是的 但我相信这样做不会自动添加所有必需的标头和 defines 当然 您可以先尝试此操作 然
  • 在 python 中使用时区获取当前时间?

    我正在使用 Google App Engine 和 python 而且我无法安装第三方库 我认为这应该可行 但它实际上运行没有错误 但它返回当前时区未应用 我做错了什么 from datetime import tzinfo timedel
  • 图例中的刻度尺寸符号

    我绘制了一个气泡图 http www r bloggers com wp content uploads 2010 12 bubbleChart png圆圈的大小对应于使用 matplotlib 的值列表 但是 我在为具有与列出的大小相对应
  • 从字符串中分割货币和金额

    我正在导入一个包含不同货币符号的金额的文件 12 10 26 13 12 50 我需要将其导入并转换为单一货币 我将字符串拆分如下 parts split preg replace 0 9 1 amount 1 无法使 preg split
  • Android中文件、类和活动之间的区别

    Android中的文件 类和活动有什么区别 文件 它是任意信息块或用于存储信息的资源 它可以是任何类型 类 它是 Java 文件的编译形式 Android最终使用这个 class文件生成可执行的apk 活动 活动相当于 GUI 工具包中的框
  • 禁用 Django 中特定应用程序的本地化

    有没有办法在 Django 设置中禁用特定应用程序的本地化 造成这种情况的可能原因有两个 关闭管理应用程序 例如 contrib admin 中的本地化 因为管理员更喜欢使用英语而不是本地语言 一些应用程序的默认翻译确实很糟糕且令人困惑 我
  • React 16:使用钩子和功能组件时从父级调用子级函数

    我需要在父组件中调用子组件的函数 我该怎么做呢 之前在 React 15 中 我可以使用 refs 来调用子函数 但不知道如何使用钩子和功能组件来做到这一点 function Child props function validate to
  • 如何将验证器与 QTableWidgetItem 一起使用?

    假设我有一个 QTableWidgetItem 项目 我只想验证用户输入的数据 例如 用户仅在该项目中输入数字 否则程序将显示警告对话框 我也搜索该文档页面 http harmattan dev nokia com docs library
  • 改进 AngularJS 指令代码

    我写了一个 AngularJS 指令 但我对它还很陌生 我不知道我是否以 Angular 方式 完成 这是我的代码 http plnkr co edit X1tOk4z8f6dCK3mfB7HP p preview http plnkr c
  • 没有事务的 JTA 数据源

    假设手动登记和取消资源 我有许多启用 XA 的资源 数据源 我计划对其执行事务更新 此外 一些支持 XA 的数据源可以单独更新 不需要任何其他资源 假设我已经使用登记的数据源提交了多个事务 那么我可以忽略 TransactionManage
  • JMS 客户端工具 - Java 8 的 HermesJMS 的替代品吗?

    HermesJMS 有哪些替代方案 我需要针对 JBoss WildFly 8 进行测试 它使用 Java 8 HermesJms 似乎是为 Java 6 构建的 但我找不到完整的 Java 8 端口 我尝试设置 hermes bat这个配
  • iPhone iOS 如何将 UILongPressGestureRecognizer 和 UITapGestureRecognizer 添加到同一个控件并防止冲突?

    我正在构建一个 iPhone 应用程序 它可以让用户重新排列屏幕上的一些 UI 元素 如何将点击手势识别器和长按手势识别器添加到同一个 UIView 中 当我长按抬起手指时 点击手势识别器就会启动 如何暂时禁用点击手势识别器或防止其在用户长
  • 在 ASP.NET 中使用 Web API 相对于 Web 方法有什么优势

    我熟悉网络方法 现在我收到了使用 Web API 而不是 Web 方法的建议 我做了一个 ASP NET Web API 的演示 它更接近于MVC架构我正在使用经典的 ASP NET Web 开发 我不喜欢搞乱控制器 MVC概念 采用经典开
  • 警告:mysqli_connect():(HY000/2002):尝试以访问权限禁止的方式访问套接字

    这两天我一直在尝试解决这个问题 警告 mysqli connect HY000 2002 尝试以访问权限禁止的方式访问套接字 我的托管是Azure 他的界面非常糟糕 编程语言是PHP 我的数据库与域位于同一资源组中 帐户数据是正确的 我做错
  • 网络中的边长x

    我正在尝试通过以下代码调整两个节点之间的边的长度 但显然这不起作用 谁能指导我在哪里犯了错误 请注意 我已经看过这个帖子了 如何在 Networkx 中指定边长度来计算最短距离 https stackoverflow com questio
  • 如何在 Android Jelly Bean Launcher 中添加自定义视图

    我正在努力在 android 中制作自定义启动器 我参考了android的Jellybean启动器的代码 现在我想对这个启动器进行一些修改 我想要的是 据我们所知 默认有五个工作区屏幕 我想在任何一个工作区屏幕中添加自定义视图 我的 xml
  • 从数据库中提取行(包括相关行)

    我想为 Oracle 数据库中的一行生成插入字符串 包括其他表中的所有依赖行 及其依赖行 Example CREATE TABLE a a id number PRIMARY KEY name varchar2 100 CREATE TAB
  • PDO + MySQL 和损坏的 UTF-8 编码 [重复]

    这个问题在这里已经有答案了 我在 PHP 中将 PDO 库与 MySQL 数据库一起使用 但是如果我插入任何以 UTF 8 编码的数据 例如阿拉伯单词 它就会插入到数据库中 但作为 在我自己的框架中 创建 PDO 连接后 我发送两个查询 S