2 回答

TA貢獻1815條經驗 獲得超6個贊
這是活動代碼頁的問題。具體來說65001是一個問題和流行的問題,所以我最好的猜測是這就是正在使用的問題,但稍后請參閱鏈接以獲取一些選擇。
在窗戶上:
> 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)
使用檢查活動代碼頁chcp。如果它被設置為65001(也許你一直在玩這個 hack 來讓 utf-8 字符顯示在你的終端上)這個問題是可靠地重現的。
> 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應該可以解決問題。
> chcp 850 && jshell
Active code page: 850
| Welcome to JShell -- Version 11.0.1
| For an introduction type: /help intro
jshell> TypeAnything<backspace>
特定于 PowerShell
想法是一樣的(更改控制臺編碼),但命令略有不同。同樣的想法是改變編碼。查看當前代碼頁[Console]::OutputEncoding.CodePage,我們希望將其切換為列表中的一個850。
> [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850)
> jshell
添加回答
舉報