Send_long_data字符集失败


send_long_data charset failur

我正在与德国Umlauten合作,就像aöü

carset在php和数据库上设置为utf8_general。只有当使用

插入数据时,Insert和select才能正常工作。

$stmt->send_long_data(1,$entry->text);

这些德文字符在数据库中以ü结尾。如果在没有send_long_data的情况下插入它们,它们将被正确存储。我也在其他专栏上尝试过。

总是一样的:正常插入--> Umlaute存储为äöü。使用send_long_data -->存储为ü等等。

我一直在研究UTF-8,但我真的找不到答案。

$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;

Mojibake

  • 您在客户端中使用utf8(好)正确编码的字节。
  • 您连接到SET NAMES latin1(或set_charset('latin1')或…),可能是默认的。(应该是utf8。)如果您正在使用PDO,则通过set NAMES utf8mb4设置PDO的字符集属性。
  • 表中的列可能是也可能不是CHARACTER SET utf8,但它应该是。

请提供SELECT col, HEX(col) FROM tbl WHERE ...ü应该具有C3BC (utf8编码)的十六进制,而不是FC (latin1编码),而不是C383C2BC(双编码)。