gpt4 book ai didi

java - 如何在groovy中将utf8mb4更改为UTF-8?

转载 作者:行者123 更新时间:2023-12-01 11:39:46 25 4
gpt4 key购买 nike

目前,我在从用户手机接收字符串输入时遇到问题。输入的字符串包含 utf8mb4 字符(笑脸、表情符号等)。这导致我的后端(mysql)出现错误,因为它只接受 utf-8 输入。

现在,我怎样才能将所有 utf-8mb4 输入替换为 utf-8?

def utf8mb4string = '👳👳👳👳👳👳👳';
// parse the utf8mb4string to utf8
// logic here
//possible utf8 result maybe: '�������'

我在这里也发现了类似的问题How would I convert UTF-8mb4 to UTF-8?但还没有明确的答案,特别是在 Groovy 中的实现。

最佳答案

can't store characters (如“戴头巾的男人”)来自基本多语言平面(BMP)之外的 MySQL 命名不佳的“utf8”编码。您需要改为指定“utf8mb4”。

如果您不关心存储这些字符,并且想要替换或丢弃它们,则必须迭代该字符串,并构建一个新字符串(在 Java 中):

IntStream converted = utf8mb4string.codePoints().map(cp -> Character.isBmpCodePoint(cp) ? cp : '\uFFFD');
String str = converted.collect(StringBuilder::new, (buf, ch) -> buf.append((char) ch), StringBuilder::append).toString();
<小时/>

或者,用 Groovy 语法:

def transform = { String it ->
char ch = it.charAt(0)
if (Character.isHighSurrogate(ch))
return '\uFFFD'
else if (Character.isLowSurrogate(ch))
return ''
else
return it;
}
utf8mb4string.collect(transform).join()

关于java - 如何在groovy中将utf8mb4更改为UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29635294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com