0

起初,我们使用 mysql 的默认字符集 latin1_swedish_ci。然后我们遇到了其他语言(如俄语等)的问题。所以我们现在将表格转换为排序规则,将字段转换为 utf8_unicode_ci。如果我们坚持使用 utf8_unicode_ci 来支持所有可能的语言,还是选择 utf8_bin 之类的其他东西,我们需要在这里进行一些确认?

对于我们使用 mysqli 的 php 文件的下一个问题,我们已经设置了这个。

if (!mysqli_set_charset($link, "utf8")) {
    echo("Error loading character set utf8: ". mysqli_error($link));
  } 
  else {
    echo("Current character set: ". mysqli_character_set_name($link));
  }

然后对于我们只使用mysql的地方,我们做了如下

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); 

现在我们发现这个问题很乏味,我们害怕我们可能会错过。是否可以像我们为数据库连接设置的配置文件一样设置此字符设置?

4

1 回答 1

4

不要将 mysql_* 与 mysqli_* 函数混合使用。你需要保持一致!您首先使用mysqli_,然后使用mysql_。那是行不通的!

我就是这样做的:

mysqli_set_charset($Handle, 'utf8'); // <- add this too
mysqli_query($Handle, "SET NAMES 'utf8';");
mysqli_query($Handle, "SET CHARACTER SET 'utf8';");
mysqli_query($Handle, "SET COLLATION_CONNECTION = 'utf8_unicode_ci';");
// might be a bit redundant but it's safe :) ... I think :)

然后确保为它提供正确的 UTF8。

于 2012-10-27T15:38:09.130 回答