Php 在Mysql中使用语言字符

Php 在Mysql中使用语言字符,php,mysql,Php,Mysql,不知道是否有人能帮忙-我以为我已经解决了这个问题,但我仍然有一些问题 基本上,人们将信息输入到我从不同国家继承的CMS系统中 经过一点帮助和研究,我已经得到它至少保存到数据库正确。egó另存为ó 然而,当从数据库中检索时,它仍然显示ó。有没有办法将其转换为php页面上的ó,为什么不能正确显示 我使用mysql\u set\u字符集('utf8',$link2);并在连接后的设置文件中设置名称,所讨论的php页面似乎必须使用正确的utf8元数据,页面在标题中设置为transistional 通过

不知道是否有人能帮忙-我以为我已经解决了这个问题,但我仍然有一些问题

基本上,人们将信息输入到我从不同国家继承的CMS系统中

经过一点帮助和研究,我已经得到它至少保存到数据库正确。egó另存为ó

然而,当从数据库中检索时,它仍然显示ó。有没有办法将其转换为php页面上的ó,为什么不能正确显示

我使用mysql\u set\u字符集('utf8',$link2);并在连接后的设置文件中设置名称,所讨论的php页面似乎必须使用正确的utf8元数据,页面在标题中设置为transistional

通过使用mb detect编码,我发现php页面正在以ascii格式显示字符

任何想法都值得赞赏


谢谢

如果您的列的字符集为utf-8,请在选择以下内容时使用BINARY关键字:

SELECT BINARY utf8_column, ...
这将保证utf-8数据不会以转换到浏览器的方式进行转换,因为PHP本身不知道编码,并且将字符串视为字节流


这是我使用的自定义函数,而不是适用于utf-8数据的
htmlentities

function xmlEntities( $s ) {
    return str_replace( array( '&', '"', '<', '>' ),
                        array( '&amp;', '&quot;', '&lt;', '&gt;' ), $s );
}
函数xmlEntities($s){
返回str_replace(数组('&',''''',''),
数组(“&;”、“”、“)、$s);
}

如果列的字符集为utf-8,请在选择以下内容时使用BINARY关键字:

SELECT BINARY utf8_column, ...
这将保证utf-8数据不会以转换到浏览器的方式进行转换,因为PHP本身不知道编码,并且将字符串视为字节流


这是我使用的自定义函数,而不是适用于utf-8数据的
htmlentities

function xmlEntities( $s ) {
    return str_replace( array( '&', '"', '<', '>' ),
                        array( '&amp;', '&quot;', '&lt;', '&gt;' ), $s );
}
函数xmlEntities($s){
返回str_replace(数组('&',''''',''),
数组(“&;”、“”、“)、$s);
}


这不是对你问题的回答,而是良好的背景阅读:谢谢,我会有一个通读的方法,我已经将内容缩小到像“从CMS页面正确插入”这样的字符,我可以在phpmyadmin中正确地看到它们,然而,当把这些字符拉回到页面上时,它们会显示为ó等。你能写下这个页面的URL吗?也许是另一个问题,HTTP头或其他东西不是你问题的答案,而是良好的背景阅读:谢谢,我会有一个通读的方法,我已经将内容缩小到像字符一样的字符,从CMS页面正确地插入,我可以在phpmyadmin中正确地看到它们,然而,当把这些字符拉回到页面上时,它们会显示为ó等。你能写下这个页面的URL吗?也许是另一个问题,HTTP头或者其他类似的东西——当我把它拿出来时遇到了一行——修复了$otherFields[$rowFields[“name”]]=htmlentities($rowFields[“value”])的问题;基本上是htmlentities把utf8搞乱了。我担心的是,仅仅去掉这些代码就可以了,因为这些代码似乎在网站上的所有文件中都有(继承了这个)。有没有办法保留htmlentities和utf8?@mro查看htmlentities文档,它能够设置编码:
htmlentities($string,entu QUOTES,'UTF-8')。但是,如果您的所有项目都是utf8格式,那么您可以使用
htmlspecialchars
,这样您就不需要设置编码。@您的方法不应该有效,但这不是管理编码问题的正确方法。MySQL和PHP为此提供了一系列工具:)@Karolis管理是什么意思?如果要通过一种不知道编码的语言从utf-8本身的源打印utf-8数据,最好的方法是避免任何转换。对我来说,这是最好的方法。@如果应用程序配置正确,MySQL和PHP都不会进行任何字符集转换。你是在用一种粗俗的方式做这件事。这不是一个好的做法。为此,我表示感谢——当我把它拿出来时,刚刚遇到了一条线——修复了$otherFields[$rowFields[“name”]=htmlentities($rowFields[“value”])的问题;基本上是htmlentities把utf8搞乱了。我担心的是,仅仅去掉这些代码就可以了,因为这些代码似乎在网站上的所有文件中都有(继承了这个)。有没有办法保留htmlentities和utf8?@mro查看htmlentities文档,它能够设置编码:
htmlentities($string,entu QUOTES,'UTF-8')。但是,如果您的所有项目都是utf8格式,那么您可以使用
htmlspecialchars
,这样您就不需要设置编码。@您的方法不应该有效,但这不是管理编码问题的正确方法。MySQL和PHP为此提供了一系列工具:)@Karolis管理是什么意思?如果要通过一种不知道编码的语言从utf-8本身的源打印utf-8数据,最好的方法是避免任何转换。对我来说,这是最好的方法。@如果应用程序配置正确,MySQL和PHP都不会进行任何字符集转换。你是在用一种粗俗的方式做这件事。这不是一个好的做法。