php - 将 UTF-8 数据放入 latin1 数据库列时会发生什么?

标签 php mysql utf-8 character-encoding latin1

我收到一些以 UTF-8 编码的数据,该数据将是西类牙语。我需要将其放入的数据库列当前使用 latin1 字符集。

如果我将 UTF-8 数据放入这些列中会发生什么?我会丢失任何正确的数据吗? 或者我应该使用 php 函数 mb_convert_encoding 转换编码?

最佳答案

每个可能的字节序列在 latin1 中都是有效的,因此您可以将 UTF-8 编码的字符串放入您的列中,不会有任何提示。当您从数据库中提取数据时,字节将与输入时相同,因此只要客户端知道这些字节是 UTF-8 编码的,您将取回原始数据。

但是,您确实不应该这样做:为什么不将列数据类型更改为 UTF-8?

ALTER TABLE my_table MODIFY my_column TEXT CHARACTER SET utf8;

关于php - 将 UTF-8 数据放入 latin1 数据库列时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460441/

相关文章:

eclipse - 更改 Eclipse 的编码

PHP/HTML - isset 函数

PHP/MySQL 使用带有 LIMIT 的 ORDER BY

mysql:将 timediff() 转换为秒

java - 如何使用 PHP 执行 java -jar 文件,并将 .jar 创建的文件加载到服务器?

MySQL:通过三个主键中的两个选择行

php - Cakephp 3.0 : Turn off or disable Stack Trace runtime for specific controller

php - SQL INSERT INTO SELECT 语句

java - 字符集过滤器导致解析 UTF-8 字符时出现问题

ruby-on-rails - 在 Rails 3 表单中处理非 utf-8 数据提交的最佳方式是什么?