2016-01-17 29 views
0

在我的.html文件,其中的形式是我在我连接到我试着用我想送西里尔字母到mysqli的数据库和PHP

mysql_set_charset('utf8'); 
// and 
// <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
数据库中的PHP文件有

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

这:

header('Content-Type: text/html; charset=utf-8'); 

的数据库中的行与整理:utf8_unicode_ci

+3

你有什么问题? – blckbird

+0

尝试用以下网站中显示的ansi替换特殊字符:http://www.w3schools.com/charsets/ref_html_ansi.asp –

+1

可能的重复http://stackoverflow.com/questions/279170/utf-8-全部通过# –

回答

0

您是否希望得到类似Избере的东西?你有Mojibake。可能这是发生了什么:

  • 您在客户端中的字节已正确编码为utf8(良好)。
  • 您与SET NAMES latin1(或set_charset('latin1')或...)连接,可能是默认情况下。 (它应该是utf8。)
  • 表中的列可能已经或可能不是CHARACTER SET utf8,但应该是这样的。

如果需要修复数据需要“2步ALTER”,像

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...; 
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...; 

,其中长度足够大,其他的“...”有什么其他(NOT NULL等)已经在列上。

不幸的是,如果你有很多需要处理的列,它将需要大量的ALTER。你可以(应该)MODIFY所有必要的列VARBINARY为一对ALTERs中的单个表。