我在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。需要一些帮助。
答案 0 :(得分:2)
尝试设置:
SET NAMES utf8;
答案 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