我损坏的捷克语文本:
NOTE ON CZECH BIRTH NUMBER VALIDATION IN CZECH LANGUAGE;
in Czechia birth number = personal identification number
========================================================
Do roku 1985 bylo pé?idá?leno cca 1000 rodnű§ch á?űŮsel, kterűŔ nejsou dá?litelnűŔ 11.
NenűŮ vylouá?eno, éƒe se v miniműŔlnűŮm poá?tu vyskytly i po tomto roce.
KorektnűŮ algoritmus je nűŔsledujűŮcűŮ:
spoá?ti zbytek po dá?lenűŮ prvnűŮch devűŮti á?űŮslic a á?űŮsla 11; je-li zbytek 10, musűŮ bű§t poslednűŮ á?űŮslice 0; jinak poslednűŮ á?űŮslice musűŮ bű§t rovna zbytku; Tedy 780123/3540 je korektnűŮ rodnű? á?űŮslo, aá?koliv nenűŮ dá?litelnű? jedenűŔcti.
最后两个单词拼写正确:dá?litelnű? jedenűŔcti = dělitelné jedenácti。
我找到了一个FTFY工具https://ftfy.readthedocs.io/en/latest/但即使有了它,我也无法修复文本。
它应该是带有BOM的UTF-8,我尝试使用VI删除BOM;使用 Sublime Text 重新加载我的文本到每种可能的编码。
所以我的想法是,这段文字可能丢失了一些信息,导致现在无法修复?
这将是一个遗憾,因为我有更多的文字。
笔记:
不,我以前没有任何完好无损的短信,也不知道这是怎么发生的。
set | grep -E '^LC_|^LANG'
:
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_ADDRESS=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_TIME=en_US.UTF-8
应该有什么地方吗cs_CZ
?就是一句吐槽...
file MainWindow.xaml.cs
:
MainWindow.xaml.cs: C++ source, Unicode text, UTF-8 text
od -t ax1 MainWindow.xaml.cs
:非常大的输出,一旦我从葬礼回来就会缩小它。LC_ALL=cs_CZ.UTF-8 head -50 '/mnt/windows/Users/vlastimil/Downloads/_DISK_D/csharp/Rodné číslo a IČ/Rodné číslo a IČ/MainWindow.xaml.cs' | grep jeden
Tedy 780123/3540 je korektnűŮ rodnű? á?űŮslo, aá?koliv nenűŮ dá?litelnű? jedenűŔcti.
LC_ALL=cs_CZ.UTF-8 head -50 '/mnt/windows/Users/vlastimil/Downloads/_DISK_D/csharp/Rodné číslo a IČ/Rodné číslo a IČ/MainWindow.xaml.cs' | grep jeden | od -t ax1
0000000 T e d y sp 7 8 0 1 2 3 / 3 5 4 0
54 65 64 79 20 37 38 30 31 32 33 2f 33 35 34 30
0000020 sp j e sp k o r e k t n E 1 E . sp
20 6a 65 20 6b 6f 72 65 6b 74 6e c5 b1 c5 ae 20
0000040 r o d n E 1 ? sp C ! ? E 1 E . s
72 6f 64 6e c5 b1 3f 20 c3 a1 3f c5 b1 c5 ae 73
0000060 l o , sp a C ! ? k o l i v sp n e
6c 6f 2c 20 61 c3 a1 3f 6b 6f 6c 69 76 20 6e 65
0000100 n E 1 E . sp d C ! ? l i t e l n
6e c5 b1 c5 ae 20 64 c3 a1 3f 6c 69 74 65 6c 6e
0000120 E 1 ? sp j e d e n E 1 E dc4 c t i
c5 b1 3f 20 6a 65 64 65 6e c5 b1 c5 94 63 74 69
0000140 . nl
2e 0a
0000142
不过,我不知道上述内容是什么意思,对于延迟,我们深表歉意。
答案1
部分答案,解释一下过程:
从十六进制转储中,我们可以在“korektnűŮ rodnű?”中看到这一点。部分,字节“c5 b1 c5 ae”是“korektnűŮ”的结尾,字节“c5 b1 3f”是“rodnű?”的结尾。这?
确实是一个?
.
如果你?”在“rodnű”中?确实应该是“é”,如“dá?litelnű?” ->“dělitelné”,那么我们现在知道“é”不知何故最终变成了“c5 b1 3f”。但我不懂捷克语,所以我不知道这是否正确。
那么现在我们可以开始猜测发生了什么。 “c5 b1”看起来像一个两字节字符编码,所以我的猜测是该文本由于某种原因被转换两次 - 第一步将“é”编码为两个字节(以任何编码),然后第二步将第一个字节编码为“c5 b1”,而第二个字节不可打印,并且它最终成为一个?
.
这是不幸的,因为如果这是真的,那么我们就丢失了有关不可打印字节的信息。尽管如此,如果没有太多字母最终成为“c5 b1 3f”,则可能有足够的信息来重建文本。
但在此之前的步骤是要知道收集足够的数据 - 我们需要足够的“字母 é 已转换为 c5 b1 3f”示例,用于不同的重音字母,以猜测文本通过哪两种编码被破坏。
或者,如果我们无法猜测,也许您已经可以检测到足够的对,我们可以用正确的字母替换损坏的字节序列,而不必重建损坏过程。
但我们需要您作为捷克语使用者来做到这一点,因为您拥有完整的文本,并且您可以猜出正确的字母。