我正在使用德语 Umlauten ,例如aöü
。
在php和数据库上将carset设置为utf8_general。只有在使用
插入数据时,插入以及选择才能正常工作 $stmt->send_long_data(1,$entry->text);
这些德语字符在数据库中以ü
结尾。
如果在没有send_long_data的情况下插入它们,它们将被正确存储。
我也尝试过其他专栏。
它总是一样的: 普通插入 - > Umlaute 存储为äöü。 使用send_long_data - >存储为Ã等等。
我已经红了UTF-8 all the way through,但我找不到答案。
$ret ="";
$null= NULL;
$entry->a_date=convert_date($entry->a_date);
$conn=get_sql_connection();
$stmt = $conn->prepare("SELECT create_entry (?,?,?,?,?)");;
$stmt->bind_param("sbisi",$entry->head,$null,$entry->area,$entry->a_date,$entry->showdate);
$stmt->send_long_data(1,$entry->text);
$stmt->execute();
$stmt->bind_result($col);
$stmt->fetch();
$ret = $col;
finish($stmt);
return $ret;
答案 0 :(得分:0)
变为乱码
SET NAMES latin1
(或set_charset('latin1')
或...)相关联。 (它应该是utf8
。)如果您正在使用PDO,请设置PDO dsn的charset属性或通过SET NAMES utf8mb4。 CHARACTER SET utf8
,也可能不是SELECT col, HEX(col) FROM tbl WHERE ...
,但应该是这样。请提供ü
- C3BC
应该是FC
(utf8编码)的十六进制,而不是C383C2BC
(latin1编码),而不是<mailSettings
<network host="relay-hosting.secureserver.net" />
</mailSettings>
(double -encoding)。