gpt4 book ai didi

mysql - 如何删除 MySQL 的 utf8 字符集不支持的字符?

转载 作者:可可西里 更新时间:2023-11-01 06:42:27 24 4
gpt4 key购买 nike

如何从字符串中删除 MySQL 的 utf8 character set 不支持的字符? ?换句话说,只有 MySQL 的 utf8mb4 character set 支持的具有四个字节的字符,例如“𝜀”。 .

例如,

𝜀C = -2.4‰ ± 0.3‰; 𝜀H = -57‰

应该变成

C = -2.4‰ ± 0.3‰; H = -57‰

我想将数据文件加载到具有 CHARSET=utf8 的 MySQL 表中。

最佳答案

MySQL的utf8mb4编码就是世人所说的UTF-8

MySQL 的utf8 编码是UTF-8 的一个子集,它只支持BMP 中的字符。 (表示字符 U+0000 到 U+FFFF,包括在内)。

Reference

因此,以下将匹配有问题的不受支持的字符:

/[^\N{U+0000}-\N{U+FFFF}]/

您可以使用以下三种不同的技术来清理输入:

1:删除不支持的字符:

s/[^\N{U+0000}-\N{U+FFFF}]//g;

2:用U+FFFD替换不支持的字符:

s/[^\N{U+0000}-\N{U+FFFF}]/\N{REPLACEMENT CHARACTER}/g;

3:使用翻译映射替换不支持的字符:

my %translations = (
"\N{MATHEMATICAL ITALIC SMALL EPSILON}" => "\N{GREEK SMALL LETTER EPSILON}",
# ...
);

s{([^\N{U+0000}-\N{U+FFFF}])}{ $translations{$1} // "\N{REPLACEMENT CHARACTER}" }eg;

例如,

use utf8;                              # Source code is encoded using UTF-8
use open ':std', ':encoding(UTF-8)'; # Terminal and files use UTF-8.

use strict;
use warnings;
use 5.010; # say, //
use charnames ':full'; # Not needed in 5.16+

my %translations = (
"\N{MATHEMATICAL ITALIC SMALL EPSILON}" => "\N{GREEK SMALL LETTER EPSILON}",
# ...
);

$_ = "𝜀C = -2.4‰ ± 0.3‰; 𝜀H = -57‰";
say;

s{([^\N{U+0000}-\N{U+FFFF}])}{ $translations{$1} // "\N{REPLACEMENT CHARACTER}" }eg;
say;

输出:

𝜀C = -2.4‰ ± 0.3‰; 𝜀H = -57‰
εC = -2.4‰ ± 0.3‰; εH = -57‰

关于mysql - 如何删除 MySQL 的 utf8 字符集不支持的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41569860/

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