Google 表格 - 将 UTF-8 文本转换为“普通字符”
Posted
技术标签:
【中文标题】Google 表格 - 将 UTF-8 文本转换为“普通字符”【英文标题】:Google Sheets - Convert UTF-8 Text to "normal character" 【发布时间】:2022-01-20 13:21:05 【问题描述】:我正在寻找一种转换为 UTF-8 格式的字符串的解决方案? (Avr%C3%ACl) 恢复正常外观。
这是一个可读的名称列表:
Shiv%C3%A3z
H%C3%B4nd%C3%AAmon
H%C3%B4nd%C3%AAmon
Rev%C3%A1
%C3%90reamy
F%C3%A5m%C3%A9
Nob%C3%B4
Nosh%C3%AC
我想用代码列表替换它们:
...
Ò c3 92 %c3%92
Ó c3 93 %c3%93
Ô c3 94 %c3%94
Õ c3 95 %c3%95
Ö c3 96 %c3%96
× c3 97 %c3%97
Ø c3 98 %c3%98
Ù c3 99 %c3%99
Ú c3 9a %c3%9a
Û c3 9b %c3%9b
Ü c3 9c %c3%9c
...
我找到了 app-spript sn-ps 和“硬编码”=substitute(),但由于要搜索的字符不仅有 5 个,我不想在彼此之间嵌套 200 多个替代项。
有什么解决办法吗?
编辑:
我还不够清楚。对此感到抱歉。我需要一一“翻译”他们单元格中的名称。关键字是我猜的应用脚本答案的列表。实际上它是一个目录,其中 A2 是指向字符页面的链接,B2 我已经从 A2 中提取的名称和服务器 C2 也被提取。
A2 公式:
just a link
B2 公式:
=trim(regexreplace(trim(REGEXREPLACE(A2;"https://www.wowprogress.com/character/eu";""));"/"&C2&"/";""))
C2公式:
=trim(REGEXEXTRACT(trim(REGEXREPLACE(A2;"https://www.wowprogress.com/character/eu";""));"([^/?]+)"))
字符列表:
! 21 %21
" 22 %22
# 23 %23
$ 24 %24
% 25 %25
& 26 %26
27 %27
( 28 %28
) 29 %29
* 2a %2a
#ERROR! 2b %2b
, 2c %2c
- 2d %2d
. 2e %2e
/ 2f %2f
0 30 %30
1 31 %31
2 32 %32
3 33 %33
4 34 %34
5 35 %35
6 36 %36
7 37 %37
8 38 %38
9 39 %39
: 3a %3a
; 3b %3b
< 3c %3c
#ERROR! 3d %3d
> 3e %3e
? 3f %3f
@ 40 %40
A 41 %41
B 42 %42
C 43 %43
D 44 %44
E 45 %45
F 46 %46
G 47 %47
H 48 %48
I 49 %49
J 4a %4a
K 4b %4b
L 4c %4c
M 4d %4d
N 4e %4e
O 4f %4f
P 50 %50
Q 51 %51
R 52 %52
S 53 %53
T 54 %54
U 55 %55
V 56 %56
W 57 %57
X 58 %58
Y 59 %59
Z 5a %5a
[ 5b %5b
\ 5c %5c
] 5d %5d
^ 5e %5e
_ 5f %5f
` 60 %60
a 61 %61
b 62 %62
c 63 %63
d 64 %64
e 65 %65
f 66 %66
g 67 %67
h 68 %68
i 69 %69
j 6a %6a
k 6b %6b
l 6c %6c
m 6d %6d
n 6e %6e
o 6f %6f
p 70 %70
q 71 %71
r 72 %72
s 73 %73
t 74 %74
u 75 %75
v 76 %76
w 77 %77
x 78 %78
y 79 %79
z 7a %7a
7b %7b
| 7c %7c
7d %7d
~ 7e %7e
¡ c2 a1 %c2%a1
¢ c2 a2 %c2%a2
£ c2 a3 %c2%a3
¤ c2 a4 %c2%a4
¥ c2 a5 %c2%a5
¦ c2 a6 %c2%a6
§ c2 a7 %c2%a7
¨ c2 a8 %c2%a8
© c2 a9 %c2%a9
ª c2 aa %c2%aa
« c2 ab %c2%ab
¬ c2 ac %c2%ac
c2 ad %c2%ad
® c2 ae %c2%ae
¯ c2 af %c2%af
° c2 b0 %c2%b0
± c2 b1 %c2%b1
² c2 b2 %c2%b2
³ c2 b3 %c2%b3
´ c2 b4 %c2%b4
µ c2 b5 %c2%b5
¶ c2 b6 %c2%b6
· c2 b7 %c2%b7
¸ c2 b8 %c2%b8
¹ c2 b9 %c2%b9
º c2 ba %c2%ba
» c2 bb %c2%bb
¼ c2 bc %c2%bc
½ c2 bd %c2%bd
¾ c2 be %c2%be
¿ c2 bf %c2%bf
À c3 80 %c3%80
Á c3 81 %c3%81
 c3 82 %c3%82
à c3 83 %c3%83
Ä c3 84 %c3%84
Å c3 85 %c3%85
Æ c3 86 %c3%86
Ç c3 87 %c3%87
È c3 88 %c3%88
É c3 89 %c3%89
Ê c3 8a %c3%8a
Ë c3 8b %c3%8b
Ì c3 8c %c3%8c
Í c3 8d %c3%8d
Î c3 8e %c3%8e
Ï c3 8f %c3%8f
Ð c3 90 %c3%90
Ñ c3 91 %c3%91
Ò c3 92 %c3%92
Ó c3 93 %c3%93
Ô c3 94 %c3%94
Õ c3 95 %c3%95
Ö c3 96 %c3%96
× c3 97 %c3%97
Ø c3 98 %c3%98
Ù c3 99 %c3%99
Ú c3 9a %c3%9a
Û c3 9b %c3%9b
Ü c3 9c %c3%9c
Ý c3 9d %c3%9d
Þ c3 9e %c3%9e
ß c3 9f %c3%9f
à c3 a0 %c3%a0
á c3 a1 %c3%a1
â c3 a2 %c3%a2
ã c3 a3 %c3%a3
ä c3 a4 %c3%a4
å c3 a5 %c3%a5
æ c3 a6 %c3%a6
ç c3 a7 %c3%a7
è c3 a8 %c3%a8
é c3 a9 %c3%a9
ê c3 aa %c3%aa
ë c3 ab %c3%ab
ì c3 ac %c3%ac
í c3 ad %c3%ad
î c3 ae %c3%ae
ï c3 af %c3%af
ð c3 b0 %c3%b0
ñ c3 b1 %c3%b1
ò c3 b2 %c3%b2
ó c3 b3 %c3%b3
ô c3 b4 %c3%b4
õ c3 b5 %c3%b5
ö c3 b6 %c3%b6
÷ c3 b7 %c3%b7
ø c3 b8 %c3%b8
ù c3 b9 %c3%b9
ú c3 ba %c3%ba
û c3 bb %c3%bb
ü c3 bc %c3%bc
ý c3 bd %c3%bd
þ c3 be %c3%be
ÿ c3 bf %c3%bf
【问题讨论】:
【参考方案1】:没有任何替代品,试试
function myFunction()
var txt = `Shiv%C3%A3z
H%C3%B4nd%C3%AAmon
H%C3%B4nd%C3%AAmon
Rev%C3%A1
%C3%90reamy
F%C3%A5m%C3%A9
Nob%C3%B4
Nosh%C3%AC`
console.log(utf8decode(unescape(txt)))
并添加此功能
function utf8decode(utftext)
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length )
c = utftext.charCodeAt(i);
if (c < 128)
string += String.fromCharCode(c);
i++;
else if((c > 191) && (c < 224))
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
else
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
return string;
var txt = `Shiv%C3%A3z
H%C3%B4nd%C3%AAmon
H%C3%B4nd%C3%AAmon
Rev%C3%A1
%C3%90reamy
F%C3%A5m%C3%A9
Nob%C3%B4
Nosh%C3%AC`
console.log(utf8decode(unescape(txt)))
function utf8decode(utftext)
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length )
c = utftext.charCodeAt(i);
if (c < 128)
string += String.fromCharCode(c);
i++;
else if((c > 191) && (c < 224))
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
else
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
return string;
基于gitbub
【讨论】:
【参考方案2】:如果你用SUBSTITUTE
蛮力改变主意:
=""; INDEX("=INDEX(IFERROR("&REPT("SUBSTITUTE(", COUNTA(E2:E))&"A:A, "&QUERY("D"&
SEQUENCE(COUNTA(D2:D), 1, ROW(D2))&", "&"E"&
SEQUENCE(COUNTA(D2:D), 1, ROW(D2))&"),",,9^9)&" ))")
spreadsheet demo
【讨论】:
以上是关于Google 表格 - 将 UTF-8 文本转换为“普通字符”的主要内容,如果未能解决你的问题,请参考以下文章
python MySQL使用python将所有表格转换为utf-8