*.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? [論壇 - 新手村]
正在瀏覽:
1 名遊客
*.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2009/12/17 21:17 所屬群組:
已註冊使用者 等級: 8
HP : 0 / 186
![]() |
請教各位大大,
一個 *.java 文字檔,在 Windows10正常編譯執行,也是用 UTF8的,在 Ubuntu1604LTS 卻亂碼,不能執行??? 如下: ~/NetBeansProjects$ javac -d . MyMath.java MyMath.java:16: error: unmappable character for encoding UTF8 for (int i=0; i<dimNum.length; i++) //�p�����t���� ^ MyMath.java:16: error: unmappable character for encoding UTF8 for (int i=0; i<dimNum.length; i++) //�p�����t���� ..........................中間省略 ^ 15 errors gedit *.java 文字檔出來也是亂碼,請教我是哪裡出錯呢?Ubuntu 預設不是UTF8 嗎?如何處置呢? 請教各位先進,感謝感謝!
2016/12/20 20:14
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
clarkliang 寫到: 先再次確認您的檔案是否是UTF-8編碼(我知道您上面有提), 先再次釐清這個,再來確認是否是其他關鍵因素造成的。 可以參考這篇「[索引] 文件編碼」紀錄的一些「討論案例」和「相關工具」 來「確認檔案編碼」和「做檔案轉碼的動作」。 GUI的工具,我會傾向先使用「kate」,不用特別設定,就可以「確認檔案編碼」和「做檔案轉碼的動作」。 使用「gedit」, 若是「16.04」請參考「這篇」做設定。 若是「14.04」請參考「這篇」做設定。 CLI的工具,「檔案轉碼」可以使用「iconv」。 ![]()
2016/12/20 22:02
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2009/12/17 21:17 所屬群組:
已註冊使用者 等級: 8
HP : 0 / 186
![]() |
謝謝大大,但成功一半,gedit 正常如下:
package exercise.unit; public class MyMath { public float getAvg(float[] dimNum) { float sum=getSummary(dimNum); return sum/dimNum.length; } public float getSummary(float[] dimNum) { float sum=0; for (int i=0; i<dimNum.length; i++) sum+=dimNum[i]; return sum; } public float getStdDev(float[] dimNum) { float avg = getAvg(dimNum); float deviation=0; for (int i=0; i<dimNum.length; i++) //計算離差平方 deviation+=Math.pow(dimNum[i]-avg,2); float variance=deviation/dimNum.length; //變異數 return (float)Math.sqrt(variance); //標準差 } 但編譯一樣亂碼,不能執行如下:還是 java 的問題?因在 NetBeans IDE 也不行,從 Win10 寫的 *.java 文字檔都不行??? ~/NetBeansProjects$ javac MyMath.java MyMath.java:16: error: unmappable character for encoding UTF8 for (int i=0; i<dimNum.length; i++) //�p�����t���� ^ MyMath.java:16: error: unmappable character for encoding UTF8 for (int i=0; i<dimNum.length; i++) //�p�����t���� .............中間省略.............................. ^ MyMath.java:16: error: unmappable character for encoding UTF8 for (int ^ MyMath.java:18: error: unmappable character for encoding UTF8 float variance=deviation/dimNum.length; //�ܲ��� ^ ^ 15 errors 且已執行(執行後有update&upgrade又重開機): ~/NetBeansProjects$ gsettings list-recursively | grep edit | grep encodings org.gnome.gedit.preferences.encodings candidate-encodings ['UTF-8', 'BIG5', 'BIG5-HKSCS', 'EUC-TW', 'GB18030', 'GB2312', 'GBK', 'CURRENT', 'ISO-8859-15', 'UTF-16'] org.gnome.gedit.preferences.encodings candidate-encodings ['UTF-8', 'BIG5', 'BIG5-HKSCS', 'EUC-TW', 'GB18030', 'GB2312', 'GBK', 'CURRENT', 'ISO-8859-15', 'UTF-16'] org.gnome.gedit.preferences.encodings candidate-encodings ['UTF-8', 'BIG5', 'BIG5-HKSCS', 'EUC-TW', 'GB18030', 'GB2312', 'GBK', 'CURRENT', 'ISO-8859-15', 'UTF-16'] clark@clark-CM1855U1604:~/NetBeansProjects$ 現在是gedit已經可以正常顯示,但java還是不能編譯執行,不知如何處置,懇請大大們支援,再次感謝,謝謝!
2016/12/21 7:15
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
clarkliang 寫到: 歹勢,我上面的回覆沒有說明清楚, 「gedit」要處理「Big5編碼」,需要透過設定,包含「正常顯示」和「存檔」,預設沒有開啟這個功能和選項。 所以您透過上面的設定後,就可以正常顯示「Big5編碼的檔案」了, 然後您使用「gedit」,在功能列,選「File」 會出現一個下拉選單,選擇「Save As...」,就會跳出另一個視窗, 在該視窗的左下角,會出現「Character Encoding:」,會顯示您目前檔案的編碼, 若檔案是「Big5」編碼,會顯示「Chinese Traditional(Big5)」。 這時候,您可以選擇「Current Locale(UTF-8)」,按下右下方的按鈕「Save」, 會在跳出一個確認對話框,問您是否要覆蓋檔案,請按下「Replace」那個按鈕, 這樣你原來的檔案就會從「Big5」編碼,轉成「UTF-8」編碼了 ================================================================================ 也可以透過執行指令來轉碼 假設您原本的檔案「MyMath.java」編碼是「Big5」。 您只要執行下面的指令,就可以將「MyMath.java」,從「Big5」轉成「UTF-8」
「-f big5」表示 「from-encoding」,也就是原始的檔案「MyMath.java」是「Big5」編碼。 「-t utf-8」表示 「to-encoding」,也就是要轉成的編碼,要轉成「UTF-8」編碼。 「-o MyMath.java」表示要存成的檔名,因為要覆蓋原來的檔,所以還是填入「MyMath.java」 最後的「MyMath.java」則表示要處理的檔案。 更多「iconv」的用法,請執行「$ man iconv」來閱讀使用方法, 或利用網路查詢關鍵字「iconv big5」來找到相關文章,交互參考。 ================================================================================ 偵測編碼的指令 (需要額外安裝套件) 執行
顯示
執行
顯示
執行
顯示
## Manpage $ man chardet $ man chardet3 $ man uchardet ## Package * python-chardet * python3-chardet * uchardet ================================================================================ 報告完畢 ![]()
2016/12/21 10:23
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2009/12/17 21:17 所屬群組:
已註冊使用者 等級: 8
HP : 0 / 186
![]() |
感謝大大,感激不盡!
能再請教一下嗎,Ubuntu 1604LTS 安裝好預設的中文內碼是用什麼呢? ANSI? BIG5? UTF-8? 其他? 再次感謝。 (其實我也不知道 Win10 預設中文內碼是什麼,能一併請教嗎?謝謝。)
2016/12/22 7:05
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
clarkliang 寫到: 我的經驗,目前在「Ubuntu」底下,我使用到的大部分的軟體都優先使用「UTF-8」編碼了。 您可以做個小實驗, 使用「gedit」開一個新檔案,然後輸入中文,存檔, 看看檔案的內容,編碼是否是「UTF-8」, 當然您也可以選擇不同的編碼來存檔,上面「回覆#4」有說明。 至於win的環境,我沒有在使用,所以也沒去深究,待其他人補充 ![]() 我目前使用的環境是「Xubuntu 16.04 (64位元) 英文界面」。 另外我今天將「[索引] 文件編碼」這篇重新做個整理了, 有興趣深究相關議題的人,可以參考裡面紀錄的「討論案例」和「參考連結」來做探索, 或是也可以從裡面提到的一些關鍵字,從網路上查到更多的資料,讓您有個探索的起點。 報告完畢 另外確認一下,樓主您原本遇到的問題是否已經解決了? ![]()
2016/12/22 18:40
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2009/12/17 21:17 所屬群組:
已註冊使用者 等級: 8
HP : 0 / 186
![]() |
謝謝大大關心,我還在努力中,謝謝!
2016/12/24 16:12
|
||||||||||
![]() |
回覆: *.java 文字檔在Windows10正常,在 Ubuntu1604LTS 卻亂碼,不能執行??? |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
clarkliang 寫到: ## MyMath.java clarkliang 寫到:package exercise.unit; public class MyMath { public float getAvg(float[] dimNum) { float sum = getSummary(dimNum); return sum / dimNum.length; } public float getSummary(float[] dimNum) { float sum = 0; for (int i = 0; i < dimNum.length; i++) sum += dimNum[i]; return sum; } public float getStdDev(float[] dimNum) { float avg = getAvg(dimNum); float deviation = 0; for (int i = 0; i < dimNum.length; i++) //計算離差平方 deviation += Math.pow(dimNum[i] - avg, 2); float variance = deviation / dimNum.length; //變異數 return (float) Math.sqrt(variance); //標準差 } } ## 測試報告 我剛剛去下載「NetBeans」來安裝測試。 您上面回覆的程式碼,是可以編譯成功的。 包含 * 直接用「NetBeans」來撰寫編譯, * 或是文字編輯器寫好,再用指令「javac」來編譯。 執行
顯示
原本檔案的編碼就是「UTF-8」了。 ================================================================================ 我若執行下面指令,將上面「MyMath.java」的檔案編碼從「UTF-8」轉成「Big5」,
再用指令「javac MyMath.java」編譯,就會出現您上面提到的錯誤訊息。 執行
顯示
執行
顯示
執行
顯示
再執行下面指令編譯
顯示
================================================================================ 以上提供參考 ![]()
2016/12/24 16:51
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.