1 package org.codehaus.mojo.osxappbundle.encoding;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.InputStream;
20 import java.io.Reader;
21 import java.io.InputStreamReader;
22 import java.io.UnsupportedEncodingException;
23 import java.io.IOException;
24 import java.util.regex.Pattern;
25 import java.util.regex.Matcher;
26
27
28
29
30
31 public class DefaultEncodingDetector
32 implements EncodingDetector
33 {
34
35 private Pattern pattern = Pattern.compile( "<?(xml|XML).*encoding=\"(.*)\"");
36
37 private static final String DEFAULT_ENCODING = "utf-8";
38
39 public String detectXmlEncoding( InputStream inputStream )
40 {
41 Reader reader;
42
43 try
44 {
45 reader = new InputStreamReader( inputStream, "utf-8" );
46 }
47 catch ( UnsupportedEncodingException e )
48 {
49 throw new IllegalStateException( "utf not supported encoding", e );
50 }
51
52 char[] buffer = new char[1000];
53
54 try
55 {
56 int read = reader.read( buffer );
57
58 String string = new String( buffer, 0, read );
59 Matcher matcher = pattern.matcher( string );
60 if ( matcher.find() )
61 {
62 return matcher.group( 2 );
63 }
64 else
65 {
66 return DEFAULT_ENCODING;
67 }
68 }
69 catch ( IOException e )
70 {
71 return DEFAULT_ENCODING;
72 }
73
74 }
75 }