Skip to content

Commit aa0ce31

Browse files
committed
add windows compatibility
1 parent 26e8127 commit aa0ce31

File tree

3 files changed

+58
-27
lines changed

3 files changed

+58
-27
lines changed

charset_linux.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// +build !windows
2+
3+
package main
4+
5+
import (
6+
"os"
7+
"os/exec"
8+
"strings"
9+
)
10+
11+
var (
12+
wideCharset = []string{"zh_", "jp_", "ko_", "ja_", "th_", "hi_"}
13+
)
14+
15+
func fixCharset() {
16+
locale := os.Getenv("LANG")
17+
18+
var asianCharset bool
19+
for k := range wideCharset {
20+
if strings.HasPrefix(locale, wideCharset[k]) {
21+
asianCharset = true
22+
}
23+
}
24+
25+
if asianCharset {
26+
os.Setenv("LANG", "C.UTF-8")
27+
cmd := exec.Command(os.Args[0])
28+
cmd.Stdin = os.Stdin
29+
cmd.Stdout = os.Stdout
30+
cmd.Stderr = os.Stderr
31+
cmd.Run()
32+
os.Exit(0)
33+
}
34+
}

charset_windows.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// +build windows
2+
3+
package main
4+
5+
import (
6+
"os"
7+
"os/exec"
8+
)
9+
10+
const codePageSet = "SAFEBOX_CODEPAGE_SET"
11+
12+
func fixCharset() {
13+
if os.Getenv(codePageSet) != "1" {
14+
exec.Command("CHCP", "65001").Run()
15+
os.Setenv(codePageSet, "1")
16+
cmd := exec.Command(os.Args[0])
17+
cmd.Stdin = os.Stdin
18+
cmd.Stdout = os.Stdout
19+
cmd.Stderr = os.Stderr
20+
cmd.Run()
21+
os.Exit(0)
22+
}
23+
}

main.go

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package main
22

33
import (
4-
"os"
5-
"os/exec"
6-
"strings"
7-
84
"github.com/gdamore/tcell/v2"
95
"github.com/rivo/tview"
106
)
@@ -29,30 +25,8 @@ var theme = tview.Theme{
2925
ContrastSecondaryTextColor: tcell.ColorDarkCyan,
3026
}
3127

32-
var (
33-
wideCharset = []string{"zh_", "jp_", "ko_", "ja_", "th_", "hi_"}
34-
)
35-
3628
func main() {
37-
locale := os.Getenv("LANG")
38-
39-
var asianCharset bool
40-
for k := range wideCharset {
41-
if strings.HasPrefix(locale, wideCharset[k]) {
42-
asianCharset = true
43-
}
44-
}
45-
46-
if asianCharset {
47-
os.Setenv("LANG", "C.UTF-8")
48-
cmd := exec.Command(os.Args[0])
49-
cmd.Stdin = os.Stdin
50-
cmd.Stdout = os.Stdout
51-
cmd.Stderr = os.Stderr
52-
cmd.Run()
53-
return
54-
}
55-
29+
fixCharset()
5630
app = tview.NewApplication()
5731
tview.Styles = theme
5832
initLayouts()

0 commit comments

Comments
 (0)