我想在我的数据库中存储一些信息。其中一个字段是日文名称。我收到一个错误:
Warning: #1366 Incorrect string value: '\xE3\x83\xA9\xE3\x83\x87...' for column 'japan-name' at row 1
所以我不能说我的数据库的字符集。我可以使用PHP或Javascript将日语/韩语转换为其他内容,当我阅读它时,它们会重新转换为日语/韩语吗?
答案 0 :(得分:0)
PHP提供base64_encode()
和base64_decode()
功能。它们很快,并且存储罚款约为33%。您可以使用第一个将utf-8东亚文本转换为ASCII格式的乱码,然后再将其存储在表格中。第二个将在您检索后将其转换回来。
以下是一个例子:
$jp = " 私はガラスを食べられます。それは私を傷つけません。";
$jpe = base64_encode ($jp);
$jpd = base64_decode ($jpe);
运行这些行后,$jpe
变量的值为
IOengeOBr + OCrOODqeOCueOCkumjn + OBueOCieOCjOOBvuOBmeOAguOBneOCjOOBr + engeOCkuWCt + OBpOOBkeOBvuOBm + OCK + OAgg ==
可以在ASCII或Latin-1列中存储。
答案 1 :(得分:-2)
utf-8将unicode数据保存在表格中......但其他方式是编码并保存然后解码并显示
<强>更新强>: 在网上搜索并在How do you Encrypt and Decrypt a PHP String?
找到答案define("ENCRYPTION_KEY", "!@#$%^&*");
$string = "This is the original data string!";
echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);
/**
* Returns an encrypted & utf8-encoded
*/
function encrypt($pure_string, $encryption_key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
/**
* Returns decrypted original string
*/
function decrypt($encrypted_string, $encryption_key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}