将拉丁语mysql数据转换为utf8

Ogu*_*gic 2 mysql unicode utf-8

我现在想使用utf 8,但我的所有数据都是latin1,转换数据的有效方法是什么.我也知道如何将数据库的结构(charset)更改为utf8,我想要做的是更改现有数据的字符集.

更新

这是我的旧设置,

  1. Html输出:utf8
  2. Html输入:utf8
  3. Php - mysql连接:latin1
  4. mysql(字段和表):latin1

这是我的新设置,我希望这是创建多语言网站的最佳方式

  1. Html输出:utf8
  2. Html输入:utf8
  3. Php - mysql连接:utf8
  4. sql(字段和表):utf8

Seb*_*oli 6

如果将utf8_encode()应用于已经是UTF8的字符串,它将返回乱码的UTF8输出.

我做了一个解决所有这些问题的功能.它叫做forceUTF8().

您不需要知道字符串的编码是什么.它可以是Latin1(iso 8859-1)或UTF8,或者字符串可以混合使用两者.forceUTF8()会将所有内容转换为UTF8.

我这样做是因为一项服务给了我一个混乱的数据,将UTF8和Latin1混合在同一个字符串中.

用法:

$utf8_string = forceUTF8($utf8_or_latin1_or_mixed_string);

$latin1_string = forceLatin1($utf8_or_latin1_or_mixed_string);
Run Code Online (Sandbox Code Playgroud)

我已经包含了另一个函数fixUFT8(),它将修复每个看起来乱码的UTF8字符串.

用法:

$utf8_string = fixUTF8($garbled_utf8_string);
Run Code Online (Sandbox Code Playgroud)

例子:

echo fixUTF8("Fédération Camerounaise de Football");

echo fixUTF8("Fédération Camerounaise de Football");

echo fixUTF8("FÃÂédÃÂération Camerounaise de Football");

echo fixUTF8("Fédération Camerounaise de Football");
Run Code Online (Sandbox Code Playgroud)

将输出:

Fédération Camerounaise de Football

Fédération Camerounaise de Football

Fédération Camerounaise de Football

Fédération Camerounaise de Football
Run Code Online (Sandbox Code Playgroud)

更新:我将theese转换为静态类,现在他们住在Github:

https://github.com/neitanod/forceutf8