2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是活動(dòng)代碼頁(yè)的問題。具體來說65001是一個(gè)問題和流行的問題,所以我最好的猜測(cè)是這就是正在使用的問題,但稍后請(qǐng)參閱鏈接以獲取一些選擇。
在窗戶上:
> java --version
java 11.0.1 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
使用檢查活動(dòng)代碼頁(yè)chcp。如果它被設(shè)置為65001(也許你一直在玩這個(gè) hack 來讓 utf-8 字符顯示在你的終端上)這個(gè)問題是可靠地重現(xiàn)的。
> chcp 65001
Active code page: 65001
> jshell
| Welcome to JShell -- Version 11.0.1
| For an introduction type: /help intro
jshell>TypeAnything<backspace>Exception in thread "main" java.lang.NullPointerException: charsetName
at java.base/java.lang.String.<init>(String.java:464)
at ...
解決方案
從https://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html中挑選,但chcp 850應(yīng)該可以解決問題。
> chcp 850 && jshell
Active code page: 850
| Welcome to JShell -- Version 11.0.1
| For an introduction type: /help intro
jshell> TypeAnything<backspace>
特定于 PowerShell
想法是一樣的(更改控制臺(tái)編碼),但命令略有不同。同樣的想法是改變編碼。查看當(dāng)前代碼頁(yè)[Console]::OutputEncoding.CodePage,我們希望將其切換為列表中的一個(gè)850。
> [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850)
> jshell
添加回答
舉報(bào)