为了定义HTML5 Doctype的字符集,我应该使用哪种符号?
短:
<meta charset="utf-8" />
Run Code Online (Sandbox Code Playgroud)长:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)我以前在我的普通mysql_*连接中有这个:
mysql_set_charset("utf8",$link);
mysql_query("SET NAMES 'UTF8'");
Run Code Online (Sandbox Code Playgroud)
我是否需要它用于PDO?我应该在哪里买到它?
$connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
Run Code Online (Sandbox Code Playgroud) 其中一个答复的一个问题,我问昨天建议我要确保我的数据库能正确处理UTF-8字符.我怎么能用MySQL做到这一点?
我正在使用Hotaru CMS和图像上传插件,如果我尝试将图像附加到帖子,我会收到此错误,否则没有错误.
违规代码(错误指向**):
/**
* Retrieve submission step data
*
* @param $key - empty when setting
* @return bool
*/
public function loadSubmitData($h, $key = '')
{
// delete everything in this table older than 30 minutes:
$this->deleteTempData($h->db);
if (!$key) { return false; }
$cleanKey = preg_replace('/[^a-z0-9]+/','',$key);
if (strcmp($key,$cleanKey) != 0) {
return false;
} else {
$sql = "SELECT tempdata_value FROM " . TABLE_TEMPDATA . " WHERE tempdata_key = %s ORDER BY tempdata_updatedts DESC LIMIT 1";
$submitted_data = …Run Code Online (Sandbox Code Playgroud) 我试图使用UTF-8并遇到麻烦.
我尝试了很多东西; 这是我得到的结果:
????而不是亚洲人物.即使是欧洲文本,我也得到Se?or了Señor.Señor或新浪新闻为????.Sefor Señor.我究竟做错了什么?我该如何修复代码?我可以恢复数据,如果是,如何恢复?
我正在尝试将一堆文件从US-ASCII转码为UTF-8.
为此,我正在使用iconv:
iconv -f US-ASCII -t UTF-8 file.php > file-utf8.php
Run Code Online (Sandbox Code Playgroud)
事情是我的原始文件是US-ASCII编码,这使得转换不会发生.显然它会发生因为ASCII是UTF-8的一个子集......
引用:
在引入非ascii字符之前,不需要显示文本文件
真正.如果我在文件中引入非ASCII字符并保存它,那么假设使用Eclipse,文件编码(charset)将切换为UTF-8.
在我的情况下,我想强制iconv将文件转码为UTF-8.是否存在非ASCII字符.
注意:原因是我的PHP代码(非ASCII文件...)正在处理一些非ASCII字符串,这导致字符串不能很好地解释(法语):
Ilétait une fois ... l'hommesé©animéemythique d'Albert
Barillé(Procidis),1?
...
编辑
US-ASCII- 是 - 的一部分UTF-8(见下面Ned的回答)US-ASCII文件是在实际编码UTF-8我的页面经常显示像Ã,Ã,Ã,Ã,Ã,代替普通字符的东西.
我使用utf8作为头页和MySQL编码.这是怎么发生的?
我在PHP中使用带有MySQL数据库的PDO库,但如果我插入以UTF-8编码的任何数据,如阿拉伯语单词,则将其插入到数据库中,但是?????????.
在我自己的框架中,在创建PDO连接后,我发送了两个查询 - SET NAMES utf8和SET CHARACTER SET utf8.它仍然无法正常工作.
例:
loadclass('PDO', array(
sprintf(
'mysql:host=%s;port=%s;dbname=%s',
confitem('database', 'host'),
confitem('database', 'port'),
confitem('database', 'name')
),
confitem('database', 'username'),
confitem('database', 'password'),
array('PDO::ATTR_PERSISTENT' => confitem('database', 'pconnect'))
));
$this->query('SET NAMES ' . confitem('database', 'charset'));
$this->query('SET CHARACTER SET ' . confitem('database', 'charset'));
Run Code Online (Sandbox Code Playgroud)
解决方法:使用json_encode函数在将数据插入数据库之前转换数据,并json_decode在获取后使用它进行解码.这就是我现在这样做的方式.
寻求
我想要获取具有重音字符的行.column(NAME)的编码是latin1_swedish_ci.
代码
以下查询Abord â Plouffe使用phpMyAdmin 返回:
SELECT C.NAME FROM CITY C
WHERE C.REGION_ID=10 AND C.NAME_LOWERCASE LIKE '%abor%'
ORDER BY C.NAME LIMIT 30
Run Code Online (Sandbox Code Playgroud)
以下显示预期值(调用函数db_fetch_all( $result )):
while( $row = mysql_fetch_assoc( $result ) ) {
foreach( $row as $value ) {
echo $value . " ";
$value = utf8_encode( $value );
echo $value . " ";
}
$r[] = $row;
}
Run Code Online (Sandbox Code Playgroud)
显示的值: 5482 5482 Abord â Plouffe Abord â Plouffe
然后使用json_encode以下代码编码数组: …
我有一个无序列表,并且经常(但不总是!)出现在我在字符之间有两个空格的地方.造成这种情况的原因是什么,我该如何预防呢?