Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从utf8\U unicode\U ci到shift jis的Mysql字符集解码_Php_Mysql_Mysqli_Character Encoding_Mysql Error 1064 - Fatal编程技术网

Php 从utf8\U unicode\U ci到shift jis的Mysql字符集解码

Php 从utf8\U unicode\U ci到shift jis的Mysql字符集解码,php,mysql,mysqli,character-encoding,mysql-error-1064,Php,Mysql,Mysqli,Character Encoding,Mysql Error 1064,我尝试了许多方法将utf8\u unicode\u ciMySQL列中的utf8\u unicode\u ci值转换为shift\u jis,但没有得到修复 原始列值位于shift_jis中,当使用新主机时,它得到了转换。现在的价值似乎是垃圾,但它在网站前端表现良好 表格列值为:EƒCƒhEƒŠƒO 而字符集是 我尝试过这种mb\u convert\u编码($str,“SJIS”,“UTF-8”);和许多其他编码,但没有得到转换。 有什么有价值的解决方案吗?首先,通过执行以下操作确定表中的内容

我尝试了许多方法将
utf8\u unicode\u ci
MySQL列中的
utf8\u unicode\u ci
值转换为
shift\u jis
,但没有得到修复

原始列值位于
shift_jis
中,当使用新主机时,它得到了转换。现在的价值似乎是垃圾,但它在网站前端表现良好

表格列值为:
EƒCƒhEƒŠƒO
字符集

我尝试过这种
mb\u convert\u编码($str,“SJIS”,“UTF-8”);
和许多其他编码,但没有得到转换。
有什么有价值的解决方案吗?

首先,通过执行以下操作确定表中的内容

SELECT col, HEX(col) ...
如果是utf8,则十六进制应该是3字节集,如片假名和平假名字符的E38XY。如果不是,则可能已经有SJIS。(或其他)

假设表列显示

col VARCHAR(...) ... CHARACTER SET utf8  -- (or utf8mb4)
然后,您可以通过执行以下操作获得要转换为SJIS的
SELECT

mysqli_charset('sjis');
mysqli_query( ... )
相反,如果需要将表从utf8转换为sjis,请执行以下操作

ALTER TABLE tbl CONVERT TO CHARACTER SET sjis;
这将把
tbl
中的所有列以及这些列中的所有数据转换为指定的字符集

不要使用
mb.*
或其他转换函数;这只会增加混淆


EƒCƒhEƒƒƒƒƒƒƒƒO
如果解释为拉丁文1,则为十六进制
8345834383838383836845838a8393834f
,如果解释为sjis(或cp932),则为
ウインドEリング--这是您所期望的吗


也就是说,
EƒCƒhEƒŠƒO
是sjis
ウインドEリング
.Mojibake通常通过执行上面的
mysqli\u字符集
来修复。

首先,通过执行

SELECT col, HEX(col) ...
如果是utf8,则十六进制应该是3字节集,如片假名和平假名字符的E38XY。如果不是,则可能已经有SJIS。(或其他)

假设表列显示

col VARCHAR(...) ... CHARACTER SET utf8  -- (or utf8mb4)
然后,您可以通过执行以下操作获得要转换为SJIS的
SELECT

mysqli_charset('sjis');
mysqli_query( ... )
相反,如果需要将表从utf8转换为sjis,请执行以下操作

ALTER TABLE tbl CONVERT TO CHARACTER SET sjis;
这将把
tbl
中的所有列以及这些列中的所有数据转换为指定的字符集

不要使用
mb.*
或其他转换函数;这只会增加混淆


EƒCƒhEƒƒƒƒƒƒƒƒO
如果解释为拉丁文1,则为十六进制
8345834383838383836845838a8393834f
,如果解释为sjis(或cp932),则为
ウインドEリング--这是您所期望的吗


也就是说,
EƒCƒhEƒŠƒO
是sjis
ウインドEリング。Mojibake通常通过执行上面的
mysqli\u字符集
来修复。

ウインドEリング
是期望的结果,谢谢你的回答。但是这里有一个问题,一些行的内容混合在一起,比如
Luster BangleƒVƒƒƒo[@oƒoƒ“ƒOƒè
这怎么可能转换它?如果表中的某些行是sjis,而某些行是utf8,那么“修复”是很棘手的。您是否有一个
WHERE
子句来识别“错误”编码的行?我将尝试提出一个
更新
来执行转换。很抱歉误解这是
Luster BangleƒV”ƒƒƒo[@oƒoƒoƒ
column
name
的列行值。因此column
name
有一些值是
EƒCƒ“hEƒŠƒo
,但有些是与英语单词混合的,如
Luster Bangle Vƒo[@code>“ƒOƒè
。所以会有解决方案吗?
显示诸如“char%”之类的变量;
ウインドEリング
是期望的结果,谢谢你的回答。但是这里有一个问题,一些行的内容混合在一起,比如
Luster BangleƒVƒƒƒo[@oƒoƒ“ƒOƒè
这怎么可能转换它?如果表中的某些行是sjis,而某些行是utf8,那么“修复”是很棘手的。您是否有一个
WHERE
子句来识别“错误”编码的行?我将尝试提出一个
更新
来执行转换。很抱歉误解这是
Luster BangleƒV”一个柱的行值为一个柱的值为一个柱的行值为一个柱的值为一个柱的值为一个柱的值为一个柱的值为一个柱的值为一个柱的值为一个柱的值为一个柱的代码名为一个柱的代码名为一个柱的代码名为一个柱的行值为一个柱的行值为一个柱的值为一个柱的
code>code>名称名名名名名为。所以柱的名名为一个柱
COCOCOCODE>COCOCODE>COCODE>名称名名名名为一个柱code
code
code>code
code
code>code>code
code
code
code>code>>