mirror of https://github.com/gdamore/tcell.git
parent
e6d83cf4c3
commit
916a717ae8
17
encoding.go
17
encoding.go
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2015 The TCell Authors
|
// Copyright 2022 The TCell Authors
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use file except in compliance with the License.
|
// you may not use file except in compliance with the License.
|
||||||
|
@ -46,7 +46,7 @@ var encodingFallback EncodingFallback = EncodingFallbackFail
|
||||||
// Aliases can be registered as well, for example "8859-15" could be an alias
|
// Aliases can be registered as well, for example "8859-15" could be an alias
|
||||||
// for "ISO8859-15".
|
// for "ISO8859-15".
|
||||||
//
|
//
|
||||||
// For POSIX systems, the tcell package will check the environment variables
|
// For POSIX systems, this package will check the environment variables
|
||||||
// LC_ALL, LC_CTYPE, and LANG (in that order) to determine the character set.
|
// LC_ALL, LC_CTYPE, and LANG (in that order) to determine the character set.
|
||||||
// These are expected to have the following pattern:
|
// These are expected to have the following pattern:
|
||||||
//
|
//
|
||||||
|
@ -64,9 +64,12 @@ var encodingFallback EncodingFallback = EncodingFallbackFail
|
||||||
// quite a lot processing overhead.
|
// quite a lot processing overhead.
|
||||||
//
|
//
|
||||||
// Note that some encodings are quite large (for example GB18030 which is a
|
// Note that some encodings are quite large (for example GB18030 which is a
|
||||||
// superset of Unicode) and so the application size can be expected ot
|
// superset of Unicode) and so the application size can be expected to
|
||||||
// increase quite a bit as each encoding is added. The East Asian encodings
|
// increase quite a bit as each encoding is added.
|
||||||
// have been seen to add 100-200K per encoding to the application size.
|
|
||||||
|
// The East Asian encodings have been seen to add 100-200K per encoding to the
|
||||||
|
// size of the resulting binary.
|
||||||
|
//
|
||||||
func RegisterEncoding(charset string, enc encoding.Encoding) {
|
func RegisterEncoding(charset string, enc encoding.Encoding) {
|
||||||
encodingLk.Lock()
|
encodingLk.Lock()
|
||||||
charset = strings.ToLower(charset)
|
charset = strings.ToLower(charset)
|
||||||
|
@ -74,7 +77,7 @@ func RegisterEncoding(charset string, enc encoding.Encoding) {
|
||||||
encodingLk.Unlock()
|
encodingLk.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// EncodingFallback describes how the system behavees when the locale
|
// EncodingFallback describes how the system behaves when the locale
|
||||||
// requires a character set that we do not support. The system always
|
// requires a character set that we do not support. The system always
|
||||||
// supports UTF-8 and US-ASCII. On Windows consoles, UTF-16LE is also
|
// supports UTF-8 and US-ASCII. On Windows consoles, UTF-16LE is also
|
||||||
// supported automatically. Other character sets must be added using the
|
// supported automatically. Other character sets must be added using the
|
||||||
|
@ -87,7 +90,7 @@ const (
|
||||||
// when it cannot find an encoding.
|
// when it cannot find an encoding.
|
||||||
EncodingFallbackFail = iota
|
EncodingFallbackFail = iota
|
||||||
|
|
||||||
// EncodingFallbackASCII behaviore causes GetEncoding to fall back
|
// EncodingFallbackASCII behavior causes GetEncoding to fall back
|
||||||
// to a 7-bit ASCII encoding, if no other encoding can be found.
|
// to a 7-bit ASCII encoding, if no other encoding can be found.
|
||||||
EncodingFallbackASCII
|
EncodingFallbackASCII
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright 2022 The TCell Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the license at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
package tcell
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"golang.org/x/text/encoding/simplifiedchinese"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExampleRegisterEncoding() {
|
||||||
|
RegisterEncoding("GBK", simplifiedchinese.GBK);
|
||||||
|
enc := GetEncoding("GBK");
|
||||||
|
glyph, _ := enc.NewDecoder().Bytes([]byte{0x82, 0x74})
|
||||||
|
fmt.Println(string(glyph))
|
||||||
|
// Output: 倀
|
||||||
|
}
|
Loading…
Reference in New Issue