2015-02-06 47 views
0

好吧,我根本没有得到字符编码,我正在研究它,但我希望有人能向我解释这里发生了什么。字符编码 - 我不明白

在我的产品表中,我有说明。在phpMyadmin中,它看起来像这样:enter image description here

我已经将编码(仅在今天)设置为utf8_general_ci。好。

现在在pLongDescription我的产品之一,我有这样的:

enter image description here

你看到呢?这是Word或其他东西使用的一些狡猾的撇号。它不断向我的生活蔓延。我甚至无法将其键入我的键盘以外的任何词。我很喜欢用'来代替。

无论如何,我会认为与utf8_general_ci设置,它不会是一个问题。如果我输出这通常从通过PHP数据库中,我得到这个:

enter image description here

不过,如果我使用utf8_encode($pDescription)我得到这个:

enter image description here

他们都不是完美的。手头上,我有一堆可怕的错误。另一方面,由于在描述中遗漏了撇号,我得到了糟糕的语法和拼写。

这里发生了什么,我该如何解决?

+1

你有一个字符集在你的PHP连接数据库设置?你使用什么驱动程序? – 2015-02-06 10:32:48

+0

目前,不,我没有 - 我有'uft8'由于某种原因被宣布出来,我想我已经尝试过了,但它没有奏效。 – Chud37 2015-02-06 10:36:48

+0

@Rududou_Sennin但是,utf8_encode()肯定会照顾那个吗? – Chud37 2015-02-06 10:37:16

回答

0
mysql_query('SET CHARACTER SET "utf8"'); 
mysql_query('SET NAMES "utf8"'); 
ini_set('default_charset', 'UTF-8'); 

使用这种:),帮助我

把这个MySQL连接后

,如果您使用的HTML,不`吨忘记设置字符集: 元的charset =“UTF- 8"

0

尝试这样的:

$pDescription = mb_convert_encoding ($pDescription, "UTF-8", "UTF-8"); 

不要忘了在的php.ini到aactivate这个扩展extension=php_mbstring.dll并重新启动Web服务器

希望帮助:)

0

你是混淆概念。你所看到的是“整理”,它表明它将如何对数据进行排序。编码设置在表级别,创建表时使用DEFAULT CHARSET = utf8(或首选字符集)。 (它也可以在my.ini/my.cnf中设置为全局默认值)

然后,您需要通过为每个连接调用SET NAMES utf8(或mysql_set_charset('utf8', $link);)指示每个连接它是utf8连接你建立的连接。

从现在开始,当你读出数据并用PHP输出时,它会向浏览器发送一个utf8字节流。假设你已经指示浏览器通过设置相关的内容类型头文件或类似的代码来解码它,它就会工作。

如果PHP文件中有任何使用扩展字符的硬编码文本,PHP文件也必须保存为utf8,因此它与数据库的输出相匹配(否则您将在页面上呈现混合编码)。

还有更多的事情要考虑,一个建议是这篇文章:

http://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql