字符编码问题——文本文件到数据库


Character Encoding Issues -- Text File to Database

我有一堆写在Linux服务器上的文本文件,需要将它们拉入数据库。我正在使用file_get_contents()来获取文件的内容。文本文件中有很多特殊的字符(比如:aáââäåæçéêìíîãóõøúúü),它们只是没有正确地进入数据库(这是专门进入Wordpress网站的)。

我检查或尝试过的东西:

  • 我将数据放入的数据库是utf8_general_ci
  • 我使用了mb_detect_encoding()来查看文本文件是什么;它认为它们是ISO-8859-1
  • 我使用file-bi来检查SSH中的字符集;它认为它们是明文/无字符集
  • 我尝试过utf8_encode()
  • 我试过mb_convert_encoding()
  • 我试过iconv()
  • 我试过htmlentities()
  • 确认WP站点上的元标签设置为输出utf-8
  • 服务器的字符编码(在php.ini中设置)设置为ISO-8859-1

根据我的尝试,我得到的要么是上面有点歪歪扭扭的A,要么更常见的是,一个看起来像数字00 86的矩形。

我被难住了——如果有人有其他建议的话,我洗耳恭听!

确保(按重要性排序):

  1. 您的数据是UTF-8编码的(如果适用,这包括您的数据库)
  2. 您的服务器正在发送utf-8标头
  3. 您的HTML有utf-8元标记

数字1和2是最常见的问题。(特别是第2个-如果你的服务器发送指定不同编码的头,浏览器会尝试使用该编码,即使元标签上写着"utf-8"。)

尝试mysql_set_encoding('utf-8');用于所有数据库连接。