我经常在使用MySQL的PHP脚本中看到类似的内容

query("SET NAMES utf8");   

我从来没有在任何项目中这样做过,所以我有几个基本的问题.

  1. 这是不是只有PDO才能做到?
  2. 如果这不是PDO特有的事情,那么做的目的是什么?我意识到它正在为mysql设置编码,但我的意思是,我从来没有使用过它,所以我为什么要使用它?

推荐答案

每当您想要向服务器发送数据时,如果服务器上的字符不能用纯ASCII表示,比如"ñ"或"ö",就需要使用它.

如果MySQL实例没有配置为默认情况下从客户机连接中使用UTF-8编码(根据您的位置和平台,很多都是这样)

如果你不知道Unicode是如何工作的,请阅读http://www.joelonsoftware.com/articles/Unicode.html.

阅读Whether to use "SET NAMES"来了解集合名称和它的具体内容.

Php相关问答推荐

PHP Mail到Googlmail.仅SPF

为什么shortcode @php()会干扰@php和@endphp

如何在不打开页面的情况下制作收件箱

基于产品变化自定义字段自定义WooCommerce低库存邮箱内容

在不刷新页面的情况下无法使用JQuery更新id

未找到laravel cascadeOnEdit

让所有具有相同名称的产品在WooCommerce中更改价格

为什么正则表达式与得到的文本块之前得到的也行?

根据产品类型显示或隐藏WooCommerce管理产品自定义字段

来自POST请求的(无效)json字符串中的奇怪字符(编码问题)

使用ESI的Symfony Sulu清漆

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

使用自定义插件中的 WooCommerce 模板发送自定义邮箱

如何更新 Laravel Eloquent 列强制转换为集合

使用 phpseclib 验证 RSA-PSS

当所有对象都属于同一类型时,我可以省略 PHP in_array() 中的 strict 参数吗?

根据WooCommerce中的产品重量更改简单产品的输入数量步值

Laravel的Storage::exists返回false,而file_exists返回true.

在 Symfony 测试中何时使用 TestCase 而不是 KernelTestCase

我怎样才能在 .htaccess 中有 2 个参数?