Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiling (javac) a UTF8 encoded Java source code with a BOM

Tags:

Hello and thank you for reading my post.

My problem is the following: I want to compile a Java source file with "javac" with this file being UTF-8 encoded with a BOM (the OS is WinXP).

Below is what I do:

1) Create a file with "Notepad" and choose the UTF-8 encoding

dos> notepad Test.java "File -> Save as..." File name   : Test.java Save as type: All Files Encoding    : UTF-8 Save 

2) Create a Java class in that file and saved the file like in 1)

public class Test {     public static void main(String [] args)     {         System.out.println("This is a test.");     } } 

3) Visualize the hexadecimal version of the file (first line)

dos> xxd Test.java | head -1 0000000: efbb bf70 7562 6c69 6320 636c 6173 7320  ...public class 

Note: ef bb bf is the UTF-8 encoded BOM (the UTF-16 encoded BOM being FE FF).

4) Try to compile this code with "javac"

dos> javac -encoding utf8 Test.java Test.java:1: illegal character: \65279 ?public class Test ^ 1 error 

Note: 65279 is the decimal version of the BOM.

My question is the following: how can I make this compiling work with:

  • keeping it UTF-8 encoded
  • and keeping the BOM?

Thank you for helping and best regards.

Léa

like image 982
Léa Massiot Avatar asked Mar 21 '12 19:03

Léa Massiot


People also ask

What is source and target in Javac?

You use the -source option to specify the java version used for compilation and you use the -target option to specify the lowest java version to support.


1 Answers

Trim the BOM and then use javac -encoding utf8 x.java

like image 74
el fuego Avatar answered Oct 08 '22 19:10

el fuego