2on*_*ne2 5 php mysql database utf-8
我试图用我的数据库中的重音安全西班牙语单词,但它不会工作,我已经尝试过:
1)将表和行的连接更改为utf8_spanish_ci和utf_unicode_ci.
2)添加标头标签
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
3)加入
header("Content-Type: text/html;charset=utf-8");
Run Code Online (Sandbox Code Playgroud)
在一个PHP标签.
在我的笔记本电脑的xampp服务器中执行此操作将工作,但当我将数据库上传到登录怪物服务器时,它不会正确保存重音.
编辑:这是我正在使用的连接:
private function Connect()
{
//$this->settings = parse_ini_file("settings.ini.php");
try
{
# Read settings from INI file, set UTF8
$this->pdo = new PDO('mysql:host=localhost;dbname=xxxxx;charset=utf8', 'xxxxx', 'xxxxxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
# We can now log any exceptions on Fatal error.
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
# Disable emulation of prepared statements, use REAL prepared statements instead.
$this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
# Connection succeeded, set the boolean to true.
$this->bConnected = true;
}
catch (PDOException $e)
{
# Write into log
echo $this->ExceptionLog($e->getMessage());
die();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我无法保存口音,它显示像á=á
排序规则仅影响文本排序,它对存储数据的实际字符集没有影响.
我会推荐这个配置:
仅为整个数据库设置字符集,因此您不必分别为每个表设置它.字符集从DB继承到表到列.使用utf8的字符集.
设置数据库连接的字符集.连接到数据库后执行这些查询:
SET CHARACTER SET 'utf8'
SET NAMES 'utf8'
Run Code Online (Sandbox Code Playgroud)使用HTTP标头和/或HTML元标记设置页面的字符集.其中一个就足够了.使用utf-8的charset.
这应该足够了.
如果要对西班牙语字符串进行适当的排序,请为整个数据库设置排序规则.utf8_spanish_ci应该工作(ci意味着不敏感).如果没有适当的整理,重音西班牙语字符将始终排序.
注意:表中已有的数据字符集可能已损坏,因为之前字符集配置错误.您应首先使用某个数据库客户端进行检查以排除此情况.如果它坏了,只需使用正确的字符集配置重新插入数据.
如果客户端连接和目标对象的字符集不同,则发送到数据库的数据将自动从连接的字符集转换为对象的字符集.
因此,如果你有数据utf8,但客户端连接设置为latin1,数据库将破坏数据,因为它会尝试转换utf8它的类似latin1.
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |