PHP + MySQL编码问题的葡萄牙语(PT-Br) [英] PHP + MySQL encoding issues for Portuguese (PT-Br)

查看:432
本文介绍了PHP + MySQL编码问题的葡萄牙语(PT-Br)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在巴西葡萄牙语开发了一个网站,我面临一些非常烦人的编码问题。

I'm developing a website in Brazilian Portuguese and I'm facing some really annoying encoding problems.

应该这样写的话:óbito正在写这样: bito

Words that should be written this way: óbito are being written this way: �bito

我注意到,虽然文本仍然在数据库,它们是确定的。但是当我对PHP使用 echo 时,会出现编码问题。

I have noticed that while the texts are still at the database they are ok. But when I use echo with PHP, the encoding problem comes up.

没有帮助:

1-设置要保存为UTF-8的PHP文件

1- Set the PHP files to be saved as UTF-8

2- 'm using this meta tag < meta http-equiv =content-typecontent =text / html; charset = utf-8/>

2- I'm using this meta tag <meta http-equiv="content-type" content="text/html; charset=utf-8" />

3-我使用这个SQL查询:

3- I used this SQL Queries:

CREATE DATABASE db_name
    CHARACTER SET utf8
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci
    DEFAULT COLLATE utf8_general_ci
    ;

ALTER DATABASE db_name
    CHARACTER SET utf8
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci
    DEFAULT COLLATE utf8_general_ci
    ;

ALTER TABLE tbl_name
    DEFAULT CHARACTER SET utf8
    COLLATE utf8_general_ci
    ;


推荐答案

您可以使用此函数更改字符集: p>

You can change the charset using this function:

$q = mysql_set_charset('utf8');
var_dump($q);

(如果函数返回true,它已成功)。

(if the function returns true it's been successful). This should fix your problems for the connection.

对于旧版本的PHP,您可以使用以下命令:

For older versions of PHP, you can use the following:

<?php
 if (function_exists('mysql_set_charset') === false) {
     /**
      * Sets the client character set.
      *
      * Note: This function requires MySQL 5.0.7 or later.
      *
      * @see http://www.php.net/mysql-set-charset
      * @param string $charset A valid character set name
      * @param resource $link_identifier The MySQL connection
      * @return TRUE on success or FALSE on failure
      */
     function mysql_set_charset($charset, $link_identifier = null)
     {
         if ($link_identifier == null) {
             return mysql_query('SET NAMES "'.$charset.'"');
         } else {
             return mysql_query('SET NAMES "'.$charset.'"', $link_identifier);
         }
     }
 }
 ?>

似乎PHP默认使用latin1,我找不到更改默认值的方法。所以我想你每次启动一个新的连接时都必须使用 mysql_set_charset()

It seems like PHP uses latin1 by default and I can't find a way to change the default. So I guess you'll have to use mysql_set_charset() every time you start a new connection.

Boa Sorte 。

Boa Sorte.

这篇关于PHP + MySQL编码问题的葡萄牙语(PT-Br)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆