我试图找出我应该用于各种类型数据的排序规则.我将存储的100%内容是用户提交的.
我的理解是我应该使用UTF-8通用CI(Case-Insensitive)而不是UTF-8 Binary.但是,我无法找到UTF-8 General CI和UTF-8 Unicode CI之间的区别.
我在数据库中有包含特殊字符的单词(主要是西班牙语,如波浪号).在数据库中,所有内容都保存并使用PHPmyAdmin正确显示,但是当我获取数据(使用PHP)并在浏览器中显示时,我得到一个奇怪的字符,如"?" 有一个正方形...我需要一个通用的修复,所以我不需要每次都逃避每个字符,而且我也可以将PHP格式的特殊西班牙语字符插入到数据库中...
HTML是正确的:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
所有表和数据库都设置为utf8_spanish
我得到的角色:
有什么建议???
谢谢!!!
我真的很努力让PHP通过PDO与UTF-8字符一起玩MySQL.
我使用php --version获得以下内容:
PHP 5.3.6 (cli) (built: Apr 19 2011 13:21:12)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
这是来自mysql cli的欢迎消息:
Server version: 5.1.57 Source distribution
Run Code Online (Sandbox Code Playgroud)
我有这个作为我的数据库连接代码:
try {
$dbh = new PDO('mysql:host='.$server.';dbname='.$database.';charset=UTF8', $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Run Code Online (Sandbox Code Playgroud)
我的PHP代码插入MySQL:
$dbh->query("SET NAMES 'UTF8'");
$values = array(':idCode' => $idCode, ':name' => $name, ':address' => $address, ':postcode' => $postcode, ':tel' => …Run Code Online (Sandbox Code Playgroud)