首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将特殊字符从数据库转换为普通字符

将特殊字符从数据库转换为普通字符
EN

Stack Overflow用户
提问于 2013-07-27 06:54:17
回答 2查看 1.5K关注 0票数 2

我有一个mysql数据库备份。这个备份排序是utf8 8-general-ci。这是来自vBul公报的备份。

以下是数据库中一篇文章中的一句话:

Ticaret sizin Tic雷特yapman z z a layan müthi bir platformdurBu platformda internet ile ba olmayan tüccarlar I in ticaret sa lanm lanm t r.Baz nedenlerden dolay kendine site kuramayan tüccarlar burada kendiünlerini tan tabilecek ve yine burada bir tüccar ile sohbet ccar。 Bir ok sat c ve müteri aras nda ba kuracak bu sistem kolayla acak。

我的html代码就是这样

代码语言:javascript
复制
<html lang="tr"> 
<head> 
<meta charset="utf8"> 
</head> 
</html>

如果我不使用lang='tr‘和charset='utf-8’。我的数据转到这个

提卡莱·梅尔克齐·西辛·蒂卡雷特·雅普曼·萨马萨·萨巴诺·拉扬·圣保罗Bu platformda internet ile ba°2- olmayan t ccarlar I§载于ticaret yapma olana°5 sa°lanm°lanm ve ve r.Baz 2. nedenlerden dolay ve kendine site kuramayan t dolay kendi kendine。 Bir§ok sat sat-c

但是lang='tr‘和charset='utf-8’并不能转换所有的东西。

事实上,我对这问题并无异议。但是这篇文章像这样被保存到数据库中。

如何转换这些字符?我不想使用str_replace。

=>ı、=>ğ、=>ş等。

我的数据库连接部分

代码语言:javascript
复制
public function __construct() {
    $this->db_connection = mysql_connect($this->_server, $this->_dbuser, $this->_dbpassword) OR die ("Veritabanı Sunucusuna Bağlanılamadı!" . mysql_error() );
    mysql_query('SET NAMES utf8'); 
    mysql_query('SET CHARACTER_SET utf8'); 
    mysql_query("SET COLLATION_CONNECTION = 'utf-8'");

    mysql_select_db($this->_db) or die("Veritabanı Bulunamadı" . mysql_error() );
}
EN

回答 2

Stack Overflow用户

发布于 2013-07-27 07:01:32

我以前也遇到过这样的问题。我认为首先您需要确保从数据库中获取的用于查看文章的控制台或编辑器使用的是'utf-8‘格式。我的意思是这个问题可能是由控制台引起的,而不是由数据库本身造成的。

票数 1
EN

Stack Overflow用户

发布于 2013-07-27 06:59:31

由于我对“非英语”字符做了大量的工作,需要一些东西才能正确地显示和存储这些字符。

没有特定的顺序(因为我不知道哪一种字符集最适合波斯语,所以我将使用UTF-8,如果它不一样,您只需使用所需的):

告诉浏览器您使用的字符集是什么,方法是从PHP header('Content-type: text/html; charset=utf-8');中设置适当的头,或者在html中设置元标记,如:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在数据库中,避免在列/表中混合不同的排序规则和字符集。我总是将数据库、表和列设置为utf8_general_ci,满足我的需要(英语、德语、塞尔维亚语、匈牙利语等语言)。

正如Jan所说,阅读http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html,您很可能需要在连接到数据库之后执行类似SET utf8之类的查询。

所有这些都应确保unicode字符的正确显示。然而,还有一件事可以覆盖所有这些-- web服务器。Apache (不知道其他服务器)有一个AddDefaultCharset指令。在大多数设置中,这被保留为Off,但我确实遇到了设置,其中默认字符集设置为latin1,因此覆盖了所有的字符集设置。如果设置了此设置,则在httpd.conf (或类似的配置文件)中设置。如果您可以访问它,我建议将其设置为“关闭”。如果没有,则可以使用放置在webroot中的.htaccess覆盖全局值,例如: AddDefaultCharset utf-8。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17895132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档