diff --git a/src/main/scala/service/WikiService.scala b/src/main/scala/service/WikiService.scala index 0988ad2..00fbabd 100644 --- a/src/main/scala/service/WikiService.scala +++ b/src/main/scala/service/WikiService.scala @@ -3,7 +3,7 @@ import java.util.Date import org.eclipse.jgit.api.Git import org.apache.commons.io.FileUtils -import util.{PatchUtil, Directory, JGitUtil, LockUtil} +import util._ import _root_.util.ControlUtil._ import org.eclipse.jgit.treewalk.{TreeWalk, CanonicalTreeParser} import org.eclipse.jgit.lib._ @@ -14,6 +14,7 @@ import org.eclipse.jgit.patch._ import org.eclipse.jgit.api.errors.PatchFormatException import scala.collection.JavaConverters._ +import scala.Some object WikiService { @@ -61,7 +62,8 @@ using(Git.open(Directory.getWikiRepositoryDir(owner, repository))){ git => if(!JGitUtil.isEmpty(git)){ JGitUtil.getFileList(git, "master", ".").find(_.name == pageName + ".md").map { file => - WikiPageInfo(file.name, new String(git.getRepository.open(file.id).getBytes, "UTF-8"), file.committer, file.time, file.commitId) + WikiPageInfo(file.name, StringUtil.convertFromByteArray(git.getRepository.open(file.id).getBytes), + file.committer, file.time, file.commitId) } } else None } diff --git a/src/main/scala/util/FileUtil.scala b/src/main/scala/util/FileUtil.scala index 0b1a98b..e4c052f 100644 --- a/src/main/scala/util/FileUtil.scala +++ b/src/main/scala/util/FileUtil.scala @@ -63,9 +63,9 @@ if(dir.exists()){ FileUtils.deleteDirectory(dir) } - try{ + try { action(dir) - }finally{ + } finally { FileUtils.deleteDirectory(dir) } } diff --git a/src/main/scala/util/StringUtil.scala b/src/main/scala/util/StringUtil.scala index 61c5c18..55c923a 100644 --- a/src/main/scala/util/StringUtil.scala +++ b/src/main/scala/util/StringUtil.scala @@ -3,6 +3,8 @@ import java.net.{URLDecoder, URLEncoder} import org.mozilla.universalchardet.UniversalDetector import util.ControlUtil._ +import org.apache.commons.io.input.BOMInputStream +import org.apache.commons.io.IOUtils object StringUtil { @@ -27,7 +29,12 @@ def escapeHtml(value: String): String = value.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """) - def convertFromByteArray(content: Array[Byte]): String = new String(content, detectEncoding(content)) + /** + * Make string from byte array. Character encoding is detected automatically by [[util.StringUtil.detectEncoding]]. + * And if given bytes contains UTF-8 BOM, it's removed from returned string.. + */ + def convertFromByteArray(content: Array[Byte]): String = + IOUtils.toString(new BOMInputStream(new java.io.ByteArrayInputStream(content)), detectEncoding(content)) def detectEncoding(content: Array[Byte]): String = defining(new UniversalDetector(null)){ detector =>