php - 从mysql 5.5降级到5.1,utf-8 General_ci

标签 php mysql utf-8

我在本地主机上使用wamp,它的mysql版本是5.5。完成我的网站后,我想将其上传到我的网站(共享托管)。它运行(5.1),但我不能再插入阿拉伯字母了。

当我用阿拉伯语插入任何字段时,它会存储为奇怪的字符“ضووØ1”。

它在我的电脑上运行得很好,但在网上却不行。

数据库默认是myisam,但是所有表都是innodb,utf8_general_ci。 这也是我在我的机器上使用的相同数据库(默认为 innodb)(我已将其导入到共享主机上的新数据库中)。

到目前为止,我在建立连接后尝试了这些事情

mysql_set_charset('utf8');

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");

我还能做些什么?

最佳答案

如果您使用mysql_set_charset('utf8');并且在插入数据时没有收到任何错误,则意味着您正确地为数据库提供了utf-8。另一方面,您可以使用其他字符集定义表,例如 Windows-1256(由 MySQL 标记为 'cp1256'),但从您看到的输出来看,这似乎是不可能的,即UTF-8 解码为 Windows-1252。

所以我看到的可能性是您正在从数据库中回显数据,并看到这个字符串。在发送任何输出之前,您需要告诉浏览器数据也是 UTF-8 格式:

<?php
header("Content-Type: text/html; charset=utf-8"); 

如果您已经执行此操作或这没有帮助,则您的数据可能在导入过程中转换不正确。

如果是这种情况,并且您可以重新导入,请确保导出数据时以 utf-8 格式显示,并且在导入导出的数据时将其视为 utf-8。

关于php - 从mysql 5.5降级到5.1,utf-8 General_ci,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600838/

相关文章:

php - 如何有效记录 php 的页面浏览量 [ laravel ]

php - 使用php和mysql进行数据过滤

php - 在上一个定位命令之后定位特定字符串

php - mysql php UTF-8 格式

python - 如何在 Python 中使用编码 utf-8.py 而不是 cp1252.py

php - 无法加载第二个 Controller

javascript - 是否可以选择日期或在一个输入上放置文本,并且自动也应该出现在另一个输入上

java - OpenCSV CSVReader UTF-8 编码

php - 使用 Laravel 使用 2 个磁盘复制文件

java - 数据库中的持久化日期不等于检索日期