我遇到了麻烦。
windows 8.1
xampp 3.2.1
php 5.4
Laravel 5.1
Lang utf8(日文)
MySQL的
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\xampp\mysql\share\charsets\
的php.ini
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
插入动作
public function register(Request $request) {
$group = new Group;
$group->name = $request->name;
$group->remarks = $request->remarks;
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$group->save();
return redirect()->guest('master/group');
}
查看插入标记
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在这个源代码中,插入时没有问题。
但是,更新时会出现乱码。
更新行动
public function update(Request $request) {
$group = Group::find($request->id);
$group->name = $request->name;
$group->remarks = $request->remarks;
$group->user_id = $request->user_id;
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$group->save();
return redirect()->guest('master/group');
}
我尝了几个。
var_dump($request->name);
// NG
var_dump(utf8_encode($request->name));
// NG
var_dump(utf8_decode($request->name));
//确定
更新时导致问题是否是正确的代码来执行utf8_decode ()
。
什么,设置有什么不对?
答案 0 :(得分:0)
请勿使用任何编码器/解码器。
而不是var_dump()
,请SELECT col, HEX(col) FROM ... WHERE ...
向我们展示输出。十六进制应该主要是6个十六进制数字的组:E8xxyy
。 (空格为20
。)
如果你没有这样的十六进制,那么数据就没有正确存储。否则,问题出在输出上。
要在PHP中查看十六进制:
$hex = unpack('H*', $text);
echo implode('', $hex);
再次查找大量E8xxyy
。这将进一步缩小问题所在。