Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Set fullPath from string if ICU failed. #78

Merged
merged 1 commit into from

2 participants

@limansky

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

Мы тут нашли забавный баг. В одном из репозиториев не показывался файл 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

@limansky

Как то маркдаун интересно попарсил.. Попытка №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))
    }
}
@limansky

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

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

@btd
Owner

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

@btd btd merged commit 0f94fa1 into btd:master
@btd
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 15, 2012
  1. @limansky
This page is out of date. Refresh to see the latest.
Showing with 1 addition and 1 deletion.
  1. +1 −1  src/main/scala/code/model/RepositoryDoc.scala
View
2  src/main/scala/code/model/RepositoryDoc.scala
@@ -122,7 +122,7 @@ class RepositoryDoc private() extends MongoRecord[RepositoryDoc] with ObjectIdPk
val list = new ArrayBuffer[SourceElement](50)
while (walk.next) {
- val fullPath = (guessString(Some(walk.getRawPath)) getOrElse "").split("/").toList
+ val fullPath = (guessString(Some(walk.getRawPath)) getOrElse walk.getPathString()).split("/").toList
list +=
(if (walk.getFileMode(level) == FileMode.TREE)
Something went wrong with that request. Please try again.