php 数据库编码,如何在php和mysql数据库中正确编码字符

本问题已经有最佳答案,请猛点这里访问。

布尔奇1(P)Searching high&low for a solution.I've tried many variations before then the question.(p)(P)What is required to have names appear the same in PPMyadmin and html page?这还可以吗?(p)(P)Edit 1:It would seem that this is a myscal issue.Why?Because the PHP generated HTML page will always show the correct characters.就在这一点上,这只是一个不正确的表现的数据库。(p)(P)Edit 2:Clarification.随着原始的定居点在代码SNIP和图像的范围内拍摄,(p)

Enter Jo?就是这样。

Jo?65505O Displayed in database

Jo?钟表后的显示器

(P)Adding the EDOCX1 English 0(p)

Enter Jo?就是这样。

Jo?也就是说

Jo?时钟后播放

(P)结束编辑2(p)(P)In a Mysql Database,Viewed with PPMyadmin:字母名称(p)(P)The items appear in the database like this:(I've modified the first jo?(o)上诉改正数据库(p)(P)字母名称(p)(P)and in the html page with encourage set the names appear like(order is reversed&modified has black diamond),(p)(P)MGXY1音标2(p)(P)字母名称:字母名称(p)(P)I have tried changing the column collation to UTF8°U bin,UTF8°UU CI,UTF8°UU Unide°CI,all with no change to either side.Also changed the document(bbedit)from UTF-8 to UTF-8(with BOM),ISO Latin 1 and Windows Latin 1.Several of these created more black diamonds,making the issue worse.(Set to UTF-8 in images)I even tried to preg□ureplace?,等与缩小相等。(p)(P)短期故事是,乔?O is entered on the page(content type above),Jo?65505O is in database,and JO?或者你来了HTML page on reshesh.(p)(P)寻找思想。Thanks.(p)

也许你需要告诉你的数据库连接,接收数据是UTF-8格式的…这并不是自动的开箱即用…你选择哪种连接方式?mysql(希望不是)、mysqli或pdo?

佩卡尼斯。谢谢你指点那个参考资料。

@ MarkusI。使用mysqli phpmyadmin报告的"连接排序规则:utf8_-general_-ci"(也使用了utf-8_-unicode_-ci)。这就是你所指的吗?

这似乎是一个很简单的方法,但是要确保你所关心的字符集已经安装好,并且已经为你的浏览器启用了。我至少遇到过一种情况,在这种情况下,一切都正常,但由于本地配置而显示错误。

在建立连接后,尝试添加$mysqli->set_charset("utf8")。

字符集问题通常很难解决。基本上,您需要确保以下所有内容都是正确的:

数据库连接使用的是UTF-8

DB表使用的是UTF-8

DB表中的各个列使用的是UTF-8

数据实际上是以utf-8编码正确存储在数据库中的(如果您从错误的源导入数据,或者更改了表或列的排序规则,则通常不是这样)

网页正在请求UTF-8

阿帕奇提供UTF-8

这里有一个关于处理这个列表的很好的教程,从开始到结束:http://www.bluebox.net/news/2009/07/mysql_encoding/

听起来好像你的问题是你有双重编码(或三重编码)的字符,可能是因为你改变了字符集或者导入了已经编码的数据,但字符集不正确。在上面的教程中有一个完整的部分介绍如何修复它。

型有条理地解决问题的好答案。THX(这需要一些时间来消化)

型是的,这是一组复杂的连锁问题。几个月前,我花了四个小时帮助别人处理这个版本。原来是数据库中的双重编码字符,在我有限但痛苦的经历中,这是很常见的。

确保您的数据库连接也使用UTF-8。试着把下面的一行放在页面的顶部,

mysql_query("SET NAMES utf8");

型哇,我只是在努力。包括在db entry脚本中(在entry之前),现在:João在db中,Jo?o在html中。没有运气。

型在数据库会话中使用正确的字符集插入和检索的数据会发生什么情况?

型@西蒙,我想你是在问你的职位上面的一个记者的问题。添加查询代码1984建议"反向"该问题。有关摘要,请参见编辑2。

型不理解你的回答。在您对coder1984答案的第一条注释中,不清楚您从数据库中检索到了什么值——最初插入的值、修改的值或使用正确连接类型通过php插入的值。

确保您的HTML页面以及参与Ajax数据交换的脚本都具有适当的HTTP头,包括

Content-Type: text/html; charset=UTF-8

因为HTML端编码设置可能被浏览器忽略

型尤金,你这里可能有东西。请求是:accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3,而回答是:Content-Type:text/html; charset=utf-8老实说,我不知道谁在做什么,有了这个角色集问题……请求有2组。(?)

型显示jo的页面的响应头是什么?o而不是jo&227;o?

型好问题。我的回答和上面的问题一样。

型嗯…您以前的记录是否以错误的编码存储?你能试着从phpmyadmin添加一些国际文本以确保它是纯UTF-8,然后试着看看用HTML呈现什么吗?

型检查Ajax请求/响应的头也会有所帮助。

默认php不使用utf8。确保您使用的是mbstring函数,而不是通常的内置字符串函数。

型脚本未使用任何字符串函数。实际上,字符串是通过Ajax发送到数据库的。然后重新加载页面。它是一个PHP生成的页面。

型很高兴在您的问题中看到一些代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值