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 文本转换为“普通字符”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google 表格中将日期转换为字符串

高分求-VB 把ANSI文本转换成UTF-8,多谢!!

python MySQL使用python将所有表格转换为utf-8

如何在 Linux 中将文件编码转换为 UTF-8

如何将 Google 电子表格的工作表字符串 id 转换为整数索引 (GID)?

如何将Excel文档转换成UTF-8格式的文本文件