|
|
|
@ -23,7 +23,8 @@ import ( |
|
|
|
|
"github.com/Unknwon/com" |
|
|
|
|
"github.com/Unknwon/i18n" |
|
|
|
|
"github.com/microcosm-cc/bluemonday" |
|
|
|
|
"golang.org/x/net/html/charset" |
|
|
|
|
|
|
|
|
|
"github.com/gogits/chardet" |
|
|
|
|
|
|
|
|
|
"github.com/gogits/gogs/modules/avatar" |
|
|
|
|
"github.com/gogits/gogs/modules/log" |
|
|
|
@ -53,19 +54,20 @@ func ShortSha(sha1 string) string { |
|
|
|
|
return sha1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func DetectEncoding(content []byte) string { |
|
|
|
|
if utf8.Valid(content[:1024]) { |
|
|
|
|
func DetectEncoding(content []byte) (string, error) { |
|
|
|
|
if utf8.Valid(content) { |
|
|
|
|
log.Debug("Detected encoding: utf-8 (fast)") |
|
|
|
|
return "utf-8" |
|
|
|
|
return "UTF-8", nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_, name, certain := charset.DetermineEncoding(content, "") |
|
|
|
|
if name != "utf-8" && len(setting.Repository.AnsiCharset) > 0 { |
|
|
|
|
result, err := chardet.NewTextDetector().DetectBest(content) |
|
|
|
|
if result.Charset != "UTF-8" && len(setting.Repository.AnsiCharset) > 0 { |
|
|
|
|
log.Debug("Using default AnsiCharset: %s", setting.Repository.AnsiCharset) |
|
|
|
|
return setting.Repository.AnsiCharset |
|
|
|
|
return setting.Repository.AnsiCharset, err |
|
|
|
|
} |
|
|
|
|
log.Debug("Detected encoding: %s (%v)", name, certain) |
|
|
|
|
return name |
|
|
|
|
|
|
|
|
|
log.Debug("Detected encoding: %s", result.Charset) |
|
|
|
|
return result.Charset, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func BasicAuthDecode(encoded string) (string, string, error) { |
|
|
|
|