2012-06-14 60 views
3

我有一个非ASCII字母文件名的RAR文件。我试着在Delphi中解码它。我的代码对于ASCII文件名工作正常,但在这些文件上失败。它不是WideChar,也不是UTF8。我在这里找到了RAR规格: http://ams.cern.ch/AMS/amsexch/arch/rar/technote.txt 但它没有提到字符编码。 我试过WOTSIT.org,但所有RAR的链接都已经死了(几乎每个链接都已经死掉了;我甚至联系了管理员,但他没有回应,也没有修复链接)。 它似乎不是一个8位编码,但不知道它是什么。如何在RAR文件中编码非ASCII文件名?

+1

你可以在这里找到UnRAR的源代码: http://www.rarlab.com/rar_add.htm 这是一个更新的版本。 – hubalu

回答

5

这是说一些关于名称的唯一段:

0x200 - FILE_NAME contains both usual and encoded 
     Unicode name separated by zero. In this case 
     NAME_SIZE field is equal to the length 
     of usual name plus encoded Unicode name plus 1. 

     If this flag is present, but FILE_NAME does not 
     contain zero bytes, it means that file name 
     is encoded using UTF-8. 

这似乎是UTF-8,但你说这是不是。你可以再试一次吗?

+0

我试过*只* ASCII和*只* UTF-8不*都* *。我会试试这个,谢谢。 – Tom

+0

谢谢@nhahtdh。我不知道我是如何错过这个段落的,但是确实这个标志和ANSII和UTF-8之间的那个0确实有效! – Tom