Set fullPath from string if ICU failed. #78

Merged
merged 1 commit into from Apr 15, 2012

Conversation

Projects
None yet
2 participants
Contributor

limansky commented Apr 15, 2012

Добрый день, Денис.

Мы тут нашли забавный баг. В одном из репозиториев не показывался файл src-plugins/build.sbt. Я покопался -- похоже что проблема в ICU. Этот фикс - чтобы показать хоть что то если ICU не смогло сконвертировать строчку.

Вот тест на этот баг:

object TestEnc {
val good = ArrayByte

val bad = ArrayByte

def main(argc: Array[String]) {
  println("S=" + (new com.ibm.icu.text.CharsetDetector).setText(good).getString(good, null))
  println("S=" + (new com.ibm.icu.text.CharsetDetector).setText(bad).getString(bad, null))
}

}

Результат работы:
S=src-plugins/build.bak
S=null

Contributor

limansky commented Apr 15, 2012

Как то маркдаун интересно попарсил.. Попытка №2

object TestEnc {
  val good = Array[Byte]('s', 'r', 'c', '-', 'p', 'l', 'u', 'g', 'i', 'n', 's', '/', 'b', 'u', 'i', 'l', 'd', '.', 'b', 'a', 'k')

  val bad = Array[Byte]('s', 'r', 'c','-', 'p', 'l', 'u', 'g', 'i', 'n', 's', '/', 'b', 'u', 'i', 'l', 'd', '.', 's', 'b', 't')

    def main(argc: Array[String]) {
      println("S=" + (new com.ibm.icu.text.CharsetDetector).setText(good).getString(good, null))
      println("S=" + (new com.ibm.icu.text.CharsetDetector).setText(bad).getString(bad, null))
    }
}
Contributor

limansky commented Apr 15, 2012

Попробовал использовать ICU-49.1 -- теперь он определяет, но неправильно:

S=src-plugins/build.bak
S=ﺩﺧﺕ�ﺣ%ﺭﺝﺡ>ﺩ�ﺓﺭﺡ%ﺗ�ﺩﺓﺫ

Owner

btd commented Apr 15, 2012

Спасибо, Михаил. Я это добавил, чтобы хоть как то минимизировать появление локальных символов в не UTF-8.

@btd btd added a commit that referenced this pull request Apr 15, 2012

@btd btd Merge pull request #78 from limansky/icu_fix
Set fullPath from string if ICU failed.
0f94fa1

@btd btd merged commit 0f94fa1 into btd:master Apr 15, 2012

Owner

btd commented Apr 15, 2012

Тут проблема на сколько я понимаю в количестве символов по которому определяется. Думаю лучше вообще убрать из имен файлов определение кодировки. Ни ICU ни JGit тут не помогают.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment