繁体   English   中英

字符编码-我听不懂

[英]Character Encoding - I don't understand

好的,我根本没有真正的字符编码,我正在对此进行研究,但是我希望有人可以向我解释这里发生了什么。

在我的产品表中,有描述。 在phpMyadmin中,它看起来像这样: 在此处输入图片说明

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

现在在我的一种产品的pLongDescription ,我有以下内容:

在此处输入图片说明

你看到了'呢? 这是Word或某些东西使用的狡猾撇号。 它不断潜入我的生活。 我什至无法在键盘上输入除单词以外的其他任何内容。 我更喜欢使用'代替。

无论如何,我会以utf8_general_ci设置来考虑的,这不是问题。 如果我通常通过PHP从数据库中输出此代码,则会得到以下信息:

在此处输入图片说明

但是,如果我使用utf8_encode($pDescription)得到以下信息:

在此处输入图片说明

它们都不是完美的。 在手边,我有很多可怕的错误。 另一方面,我的语法和拼写不好,因为它在描述中遗漏了撇号。

这是怎么回事,我该如何解决?

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

使用这个:)对我有帮助

mysql连接后放这个

如果您使用的是html,请不要忘记设置字符集:meta charset =“ utf-8”

试试这个:

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

不要忘记在php.ini中激活此扩展extension=php_mbstring.dll并重新启动Web服务器。

希望对您有所帮助:)

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

然后,您需要为建立的每个连接直接调用SET NAMES utf8 (或mysql_set_charset('utf8', $link);mysql_set_charset('utf8', $link);以指示每个连接均为utf8连接。

从现在开始,当您读取数据并使用PHP输出时,它将向浏览器发送一个utf8字节流。 假设您已通过设置相关的内容类型标头或类似内容指示浏览器对其具有utf8进行解码,则此方法有效。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM