将错误文本转换为韩文

2024-06-14 02:37:03 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我正在清理一些旧的韩语代码,还有一些以前是韩语的代码部分我想翻译成英语。然而,似乎存在编码问题,文本不再是韩文。相反,这是一个乱七八糟的烂摊子

我想从断线翻译成英文

我的计划是从断开的字符串开始,使用在我的计算机上用来解码断开的字符串的编解码器将其编码为二进制,使用韩语编解码器将该二进制解码为韩语,然后谷歌将该韩语翻译成英语问题是我不知道如何将这些乱七八糟的东西解码成可读的韩文。

我试过的

我开始写一些Python3代码来翻译它,但是我一直被编码错误所困扰,老实说,我不知道从哪里开始。这段代码是在假设韩国人使用了cp949编解码器的情况下编写的,我不确定

fileIn = open('Broken_Korean.txt', 'r', encoding='cp949')
fileOut = open('Fixed_Korean.txt', 'w')

Lines = fileIn.readlines()
for line in Lines:
    fileOut.write(str(line.encode('cp949')))
    fileOut.write('\n')
    fileOut.write(line.encode('cp949').decode('utf-8'))

我也研究过这个问题,但没有发现任何突破性的东西。我相信用于显示断开字符串的编解码器是UTF-8,但我可能弄错了。我不知道最初的韩语是怎么写的,只知道它是用“多字节编码方案(MBCS)”写的。在上下文中,该程序是在LabVIEW 2015中编写的。据推测,他们在编写初始代码时使用了韩国版本

断裂字符串的一些示例:

ÆÄÀÏ ´ëÈ­ »óÀÚ5

ÆÄÀÏ ´ëÈ­ »óÀÚ6

ÆÄÀÏ ´ëÈ­ »óÀÚ

幸运的是,一些编码错误发生在enum上,因此我能够找到英文翻译。用这个翻译,我可以猜出古兰经可能是什么,但我不确定。我想这可能会帮助我推断出所使用的编解码器,但我不知道怎么做

À¯ÇÑ »ùÇÃ=有限样本>;유한 샘플

¿¬¼Ó »ùÇÃ=连续样本>;연속 샘플

Çϵå¿þ¾î ŸÀֿ̹¡ ÀÇÇÑ ´ÜÀÏ Æ÷ÀÎÆ®=硬件定时单点>;하드웨어 타이밍 단일 포인트

如果您能提供编码方面的任何帮助或如何解决此问题的提示,我们将不胜感激!!我现在很迷路

编辑: 以下是一些断裂字符串的十六进制转储:

breaked_Korean.txt

ÆÄÀÏ ´ëÈ­ »óÀÚ5
ÆÄÀÏ ´ëÈ­ »óÀÚ6
ÆÄÀÏ ´ëÈ­ »óÀÚ
À¯ÇÑ »ùÇÃ
¿¬¼Ó »ùÇÃ
Çϵå¿þ¾î ŸÀֿ̹¡ ÀÇÇÑ ´ÜÀÏ Æ÷ÀÎÆ®
hexdump -C Broken_Korean.txt                                       
000000  c3 86 c3 84 c3 80 c3 8f 20 c2 b4 c3 ab c3 88 c2  ........ .......                                               
000010  ad 20 c2 bb c3 b3 c3 80 c3 9a 35 0d 0a c3 86 c3  . ........5.....                                               
000020  84 c3 80 c3 8f 20 c2 b4 c3 ab c3 88 c2 ad 20 c2  ..... ........ .                                               
000030  bb c3 b3 c3 80 c3 9a 36 0d 0a c3 86 c3 84 c3 80  .......6........                                               
000040  c3 8f 20 c2 b4 c3 ab c3 88 c2 ad 20 c2 bb c3 b3  .. ........ ....                                               
000050  c3 80 c3 9a 0d 0a c3 80 c2 af c3 87 c3 91 20 c2  .............. .                                               
000060  bb c3 b9 c3 87 c3 83 0d 0a c2 bf c2 ac c2 bc c3  ................                                               
000070  93 20 c2 bb c3 b9 c3 87 c3 83 0d 0a c3 87 c3 8f  . ..............                                               
000080  c2 b5 c3 a5 c2 bf c3 be c2 be c3 ae 20 c3 85 c2  ............ ...                                               
000090  b8 c3 80 c3 8c c2 b9 c3 96 c2 bf c2 a1 20 c3 80  ............. ..                                               
0000a0  c3 87 c3 87 c3 91 20 c2 b4 c3 9c c3 80 c3 8f 20  ...... ........                                                
0000b0  c3 86 c3 b7 c3 80 c3 8e c3 86 c2 ae              ............     


Tags: 字符串代码txt编码编解码器line解码write
1条回答
网友
1楼 · 发布于 2024-06-14 02:37:03

hextump中的数据可能被读取为ISO-8859-1(也称为{}),并重新保存为UTF-8。若要反转,请解码为UTF-8以获取原始cp939字节值,但以Unicode字符串作为Unicode码点。latin1编解码器占据前256个代码点,使用它进行编码将产生具有相同字节值的字节字符串。然后可以应用正确的编解码器解码回Unicode字符串:

data = bytes.fromhex('''
c3 86 c3 84 c3 80 c3 8f 20 c2 b4 c3 ab c3 88 c2
ad 20 c2 bb c3 b3 c3 80 c3 9a 35 0d 0a c3 86 c3
84 c3 80 c3 8f 20 c2 b4 c3 ab c3 88 c2 ad 20 c2
bb c3 b3 c3 80 c3 9a 36 0d 0a c3 86 c3 84 c3 80
c3 8f 20 c2 b4 c3 ab c3 88 c2 ad 20 c2 bb c3 b3
c3 80 c3 9a 0d 0a c3 80 c2 af c3 87 c3 91 20 c2
bb c3 b9 c3 87 c3 83 0d 0a c2 bf c2 ac c2 bc c3
93 20 c2 bb c3 b9 c3 87 c3 83 0d 0a c3 87 c3 8f
c2 b5 c3 a5 c2 bf c3 be c2 be c3 ae 20 c3 85 c2
b8 c3 80 c3 8c c2 b9 c3 96 c2 bf c2 a1 20 c3 80
c3 87 c3 87 c3 91 20 c2 b4 c3 9c c3 80 c3 8f 20
c3 86 c3 b7 c3 80 c3 8e c3 86 c2 ae
''')

fixed = data.decode('utf8').encode('latin1').decode('cp949')
print(fixed)

输出:

파일 대화 상자5
파일 대화 상자6
파일 대화 상자
유한 샘플
연속 샘플
하드웨어 타이밍에 의한 단일 포인트

翻译(谷歌翻译):

File Dialog 5
File Dialog 6
File dialog
Finite sample
Continuous sample
Single point by hardware timing

如果从文件开始,请将文件读取为UTF-8,应用修复程序,然后将其写回(正确的)UTF-8:

with open('Broken_Korean.txt', 'r', encoding='utf8') as f:
    data = f.read().encode('latin1').decode('cp949')

with open('Fixed_Korean.txt', 'w', encoding='utf8') as f:
    f.write(data)

相关问题 更多 >