php mysql搜索特殊字符

时间:2013-06-26 14:56:16

标签: php mysql mysqli

我在mysql DB中有一个表,其中包含特殊字符,如Ø,Æ等。当我用php运行搜索时,我找不到这些字段。但是当我在phpmyadmin中运行相同的sql时,我得到了结果。 这是表结构:

CREATE TABLE IF NOT EXISTS `clientinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `adresse` varchar(160) NOT NULL,
  `gatenavn` varchar(20) NOT NULL,
  `husnr` varchar(20) NOT NULL,
  `bokstav` varchar(2) NOT NULL,
  `postnr` varchar(20) NOT NULL,
  `poststed` varchar(60) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=398 ;

这是一个示例查询:

SELECT * FROM clientinfo WHERE gatenavn = 'EKRAVEIEN' AND husnr = '1' AND postnr = '2010' AND poststed = 'STRØMMEN'

当我在phpmyadmin中运行此查询时,我得到结果;但是当我用php运行时不要搞定。我正在使用mysqli。需要一些帮助。

5 个答案:

答案 0 :(得分:2)

尝试设置:

SET NAMES utf8;

在同一个mysql会话中查询之前

答案 1 :(得分:2)

在进行查询之前,请告诉您的连接实例,以提供UTF-8。在MySqli中,您可以调用函数set_charset(),之后连接对象将提供UTF-8。

调用此函数可使您独立于数据库配置,如有必要,连接将转换返回的数据。当然,如果不需要转换,它是最快的,因此调整配置也是一件好事。

// tells the mysqli connection to deliver UTF-8 encoded strings.
$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
$db->set_charset('utf8');

答案 2 :(得分:0)

如果您有权访问MySQL配置文件,请将这些设置设置为my.cfg

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

答案 3 :(得分:-1)

尝试使用htmlspecialchars php函数。

string htmlspecialchars ( string $string , int $flags = ENT_COMPAT | ENT_HTML401
                         , string $encoding = 'UTF-8' , bool $double_encode = true)

您可以更改字符串的encoding信息。例如KOI8-R为俄罗斯符号

答案 4 :(得分:-1)

这可能是您的php.ini文件,Apache Web服务器或HTML文档或MySQL的字符集的问题

要做的事情:

始终确保您的html元标记中的charset设置为utf8

default_charset = "utf-8";

在你的php.ini文件中

并添加

AddDefaultCharset UTF-8
如果要输出unicode字符,请

到httpd.conf