utf8mb4 相关问题

与其`utf8`编码不同,MySQL的`utf8mb4`编码提供完整的Unicode支持(包括四字节UTF-8编码符号)。

一般错误:3988 参数无法从排序规则 utf8_unicode_ci 转换为 utf8mb4_0900_ai_ci

我正在尝试在文本类型列中保存包含电子邮件 html 的字符串。但我收到这个错误。我没能找到不兼容的字符在哪里。有什么消毒方法我...

回答 3 投票 0

mySQL 表名中可以有表情符号吗?

假设我正在制作一个网站,让人们在用户名中使用表情符号,我将为每个用户提供一个表来存储他们的信息/个人资料/等...,并且名称将相同作为...

回答 1 投票 0

C 中将 UTF8 4 字节字符串转换为 UTF16 字符串的算法

我需要在C中将UTF8 4字节字符串转换为UTF16字符串。 我不允许使用任何外部库来支持它。我已经定义了一个宏来支持 UTF8 3 字节到

回答 1 投票 0

MariaDB:由于随机 Unicode 代码点,插入失败

我使用的是 MariaDB 10.6.16,但在 10.3.39 中也重现了相同的行为。我的问题是这个小 SQL 片段: 创建表问题( 文本 文本 ) 字符集 utf8mb4 整理

回答 1 投票 0

一般错误:1366 错误的字符串值:'\xF0\x9F\x8D\xB8 !...'

当用户发送包含表情符号的消息时(准确地说,当消息存储在MySql数据库中时)会出现以下错误: PDOException:SQLSTATE [HY000]:一般错误:1366 不正确

回答 1 投票 0

如何使用 mysql 或 PHP 在 mysql (mariadb) 数据中查找非 UTF-8 字符

我正在使用 mysql Ver 15.1 Distrib 10.3.39-MariaDB,适用于 Linux (x86_64),使用 readline 5.1 PHP 8.2.13 (cli)(构建时间:2023 年 11 月 24 日 09:33:30)(NTS) 我想使用其中一个或两个来查找数据

回答 1 投票 0

MySQL 抛出错误字符串值错误

我正在尝试将以下推文存储到长文本列/utf8 字符集/MySQL 5.5 中。启用 MyISAM 存储的数据库。 我们还尝试了 utf8mb4、utf16、utf32 字符集,但无法通过...

回答 6 投票 0

尽管使用utf8mb4/utf8mb4_general_ci创建表,但无法将中文插入MySQL数据库

我在 Stackoverflow 上阅读了很多帖子,总的来说,它们似乎仍然没有解决我的情况。 在 PHP 7.4 上运行 Laravel 7.x,我使用 Laravel-Excel 导入到数据库中。截图...

回答 1 投票 0

表情符号插入数据库php后显示为问号

我使用utf8mb4作为编码,character_set_connection和character_set_database已设置为utf8mb4。我的网页的字符集设置为utf8。我已经使用了 PDO,当我打开

回答 4 投票 0

已弃用的 utf8_encode($foo) 可以工作,而 mb_convert_encoding($foo, 'UTF-8) 则不行

在 web.config 设置为的 IIS 环境中,将数据从 PHP(使用 default_charset = 'UTF-8' 设置)传输到 MySQL 时,我遇到了一个非常烦人的问题: 在 web.config 设置为 IIS 环境中,将数据从 PHP(使用 default_charset = 'UTF-8' 设置)传输到 MySQL 时,我遇到了一个非常烦人的问题: <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" /> 还在具有相同默认字符集的 Apache 环境中进行了测试,结果相同。我还设置了 MySQLi 在任何查询之前设置字符集: $mysqli->set_charset('UTF-8'); 我还有一组准备好的语句,用于搜索字符串中的each字符,以使用以下方法将任何非 UTF-8 编码转换为 UTF-8: mb_convert_encoding($char, 'UTF-8', mb_detect_encoding($char)); 在尝试失败后,通过使用相同的过程解析整个字符串: mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string)); 带有脚本的文件的内容类型设置为标题上的 content-type charset UTF-8。但这仍然没有解决问题。 我也,已将 MySQL 表和模式的所有排序规则设置为 utf8mb4,当然还使用“utf8mb4_unicode_520_ci”。尽管如此,问题仍然存在。 我写的分割字符串的函数如下: static private function split_and_convert($value, $encoding = 'UTF-8') { $split = mb_str_split($value); $filter = []; foreach($split as $chr) { $from = mb_detect_encoding($chr); $encoded = ($from !== $encoding) ? mb_convert_encoding($chr, $encoding, $from) : $chr; $filter[] = $encoded; // echoing for testing echo 'char ' . $encoded . ' (' . $from . ')<br>'; } return join('', $filter); } 这回显了以下尝试保存的内容Martínez: char M (ASCII) char a (ASCII) char r (ASCII) char t (ASCII) char � (UTF-8) char n (ASCII) char e (ASCII) char z (ASCII) MySQL 抛出以下错误: Error No: 1366 - Incorrect string value: '\xEDnez' for column 'contactLast' at row 1 还是没有喜悦。但如果我这样做,它就像一个魅力: static private function split_and_convert($value, $encoding = 'UTF-8') { $split = mb_str_split($value); $filter = []; foreach($split as $chr) { $from = mb_detect_encoding($chr); $encoded = ($from !== $encoding) ? mb_convert_encoding($chr, $encoding, $from) // set to actually encode the 'UTF-8' encoded char // I'm supposed not to do this, but is what works // which makes no sense : utf8_encode($chr); $filter[] = $encoded; // echoing for testing echo 'char ' . $encoded . ' (' . $from . ')<br>'; } return join('', $filter); } 结果如下: char M (ASCII) char a (ASCII) char r (ASCII) char t (ASCII) char í (UTF-8) char n (ASCII) char e (ASCII) char z (ASCII) MySQL 不会抛出任何错误。如果我将 utf8_encode 替换为 mb_convert_encoding($encoded, 'UTF-8'),我会得到与不过滤字符串相同的错误。 我怀疑 mb_detect_encoding 要么错误地检测到字符编码,要么只是 mb_convert_encoding 没有完成它的工作。 如果有人可以提供帮助,我将不胜感激。我花了几个小时寻找解决方案,但所提供的解决方案都不起作用。我发现自己陷入了困境,因为有效的方法已被弃用。 所以,这些是我面临的问题列表: mb_convert_encoding -> 不编码或编码为 UTF8 以外的内容 mb_detect_encoding -> 未正确检测 字符串被编码为 ASCII 而不是 UTF-8 作为请求头中的字符集。 困惑:为什么我需要将 UTF-8 编码的字符编码为 UTF-8 才能工作? 在寻找答案和一整天的研究之后,这就是问题所在。过度加工。在开发过程中的某个时刻,会设置一个中间人来验证每个 POST/GET 请求并处理每个值,以确保发送的编码是 UTF-8。我正在重构的代码已经处理了数据。 中间人是使用utf8_encode进行编码的,所以,我怀疑函数检查本身是为了避免过度处理。我还必须重构中间人,这样就不会有冲突。 所以,这就是问题所在,两个不同的代码正在处理编码,从而产生了冲突。一旦我重构了中间人,问题就消失了。 总之,问题不是mb_convert_encoding或mb_detect_encoding,如果您有类似的问题,请确保您正在处理的代码没有使用两种不同的方法使用不同的功能执行类似的过程。 在我的例子中,中间人没有验证或设置为检测字符串是否已经编码为 UTF-8,它只是实现编码。这也是我获得报酬来重构代码的原因。 对于我来说,为什么正确的 UTF-8 编码字符串会导致 MySQL 抛出错误,这仍然是没有意义的。为此,我怀疑过度处理正在破坏输入。

回答 1 投票 0

SELECT Hüsby 返回“错误”输出 Husby

在同一个数据库中,我运行查询并得到一个正确的结果和一个错误的结果。 正确的 从 `stammdaten` 中选择 Ort,其中 `Ort` = 'Husby'; 奥尔特 丈夫 丈夫 错误的 从

回答 3 投票 0

将 MySQL Workbench 连接到 Power BI 的问题

安装正确的连接器后,我无法将 DB 连接到 Power Bi。 详细信息:“从提供程序读取数据时发生错误:'字符集'utf8mb3'不受...支持”

回答 1 投票 0

将 charset latin1 中的数据从 MySQL 5.7 迁移到 8.0 时出现问题

当我们将 AWS RDS 中托管的 MySQL 数据库从 5.7 版升级到 8.0 版时,我的公司遇到了一个令人不快的问题。 最初,我们有 MySQL 5.7,之前的开发团队在其中保留了字符集和排序规则

回答 0 投票 0

Tcl, 数据库插入 mysqlexec/db server: Incorrect string value:

几年来我一直有一个奇怪的问题。事情是这样的。 我运行 Rocky Linux(也发生在 CentOS 中),运行 Apache 2.4.53 和 MariaDB(mysql Ver 8.0.30 for Linux on x86_64(Source distribu ...

回答 1 投票 0

像 mariadb 和汉字一样使用

我带着 utf8mb4 字符问题回来了。我在装有 Linux Mint 20.3 的本地机器上使用 mariadb 服务器版本:10.3.37-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04。 这是一个测试表: 创建表

回答 1 投票 0

Mysql utf8mb4连接字符串(Node.js, serverless-mysql包)

我已经把Mysql的默认值改为utf8mb4,但是emojis仍然被mysql拒绝。错误。ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x92\xA9'。

回答 1 投票 1

在MySQL中转换字节字符串为表情符号。

SELECT BINARY('🤪'); 输出 àÛÕ. 如何将(结果)字节串转换回表情符号?

回答 1 投票 0

在MySQL中,utf8mb4中的哪些是utf8中没有的?

似乎在网上找不到任何资源,说明MySQL的utf8mb4(4字节utf8)中有哪些语言字符是utf8(3字节UTF8)中没有的。谁能解释一下有哪些额外的 ...

回答 1 投票 1

Detect编码Latin1和UTF-8

我正在获取可以是latin1或utf8编码的文件。我在C#中将其作为流获取。如何检测其latin1(“ ISO-8859-1”)或UTF-8?当我尝试检测到它时,它将始终将其检测为UTF-8。 ...

回答 1 投票 0

如何将MySQL 5.6数据库中的排序规则更改为utf8mb4_unicode_ci?

我在数据库(共享主机服务器中的MySQL 5.6)中有几个排序规则,我想将它们全部设置为utf8mb4_unicode_ci排序规则,并将连接字符集更改为utf8mb4,我该怎么办...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.