Witam i dziękuję za przeczytanie mojego wpisu.Kompilowanie (javac) kodu źródłowego kodu Java zakodowanego w UTF8 z BOMem
Mój problem jest następujący: Chcę skompilować plik źródłowy Java za pomocą "javac" z tym plikiem, który jest kodowany w UTF-8 za pomocą LM (OS to WinXP).
Poniżej jest to, co robię:
1) Utwórz plik z "Notatnika" i wybrać kodowanie UTF-8
dos> notepad Test.java
"File -> Save as..."
File name : Test.java
Save as type: All Files
Encoding : UTF-8
Save
2) Utwórz klasę Java w tym pliku i zapisaniu pliku jak w 1)
public class Test
{
public static void main(String [] args)
{
System.out.println("This is a test.");
}
}
3) Wizualizacja wersji szesnastkową pliku (pierwsza linia)
dos> xxd Test.java | head -1
0000000: efbb bf70 7562 6c69 6320 636c 6173 7320 ...public class
Uwaga: EF BB BF jest UTF-8 LM (UTF-16 jest kodowana BOM FE FF).
4) Spróbuj skompilować ten kod z "javac"
dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class Test
^
1 error
Uwaga: jest wersja dziesiętną BOM.
Moje pytanie jest następujące: w jaki sposób mogę dokonać tej kompilacji pracy z:
- utrzymanie go kodowanie UTF-8
- i utrzymaniu LM?
Dziękuję za pomoc i pozdrawiam.
Léa
To prawda: musisz usunąć BOM. Nie ma żadnej firmy w UTF-8, więc oczywiście jest to błąd. Jest to od dawna błąd Microsoftu. Nigdy nie umieszczaj BOM w UTF-8 !!!!! – tchrist
Witaj. Dziękuję za Twoją odpowiedź. Użyłem "Notepad ++" do zakodowania pliku jako "UTF8 bez LM". Kompilacja kodu z "javac" teraz działa. –
@tchrist [Standard Unicode (strona 30)] (http://www.unicode.org/versions/Unicode6.0.0/ch02.pdf) pozwala na zestawienie BOM w UTF-8, więc masz pełne prawo do umieszczenia tam jeśli sobie życzysz. Dlaczego chcesz to inna historia, ale 'javac' powinien sobie z tym poradzić. – ArtB