字符集编码格式的新功能。我有一个ant构建脚本,它以ISO-8859-1格式编译我的java代码。它工作正常。
阅读几篇文章后: How do I convert between ISO-8859-1 and UTF-8 in Java?
我已将characterSet格式更改为UTF-8,从那时开始编译问题。
引发的错误是:
[javac] TestEncoding.java (at line 11)
[javac] case '?' :
[javac] ^^^^^^^^
我的构建脚本如下:
<javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter"
destdir="bin" debug="true" deprecation="on" encoding="iso-8859-1"
source="1.6" target="1.6"
debuglevel="lines,source" failonerror="false" errorProperty="buildFailed">
<compilerarg line="-warn:+raw" />
<compilerarg line="-warn:-serial" />
<compilerarg line="-log source/testapp/compileLog.xml" />
<src path="testapp" />
<classpath refid="application.classpath" />
</javac>
我的一个有问题的课程中包含以下代码:
public class TestEncoding {
public static final String filterAccent(String s) {
StringBuffer sb = new StringBuffer();
int n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
switch (c) {
case 'á':
sb.append("a");
break;
case 'à':
sb.append("a");
break;
case 'ã':
sb.append("a");
break;
case 'À':
sb.append("A");
break;
case 'â':
sb.append("a");
break;
case 'Â':
sb.append("A");
break;
case 'ä':
sb.append("a");
break;
case 'Ä':
sb.append("A");
break;
case 'å':
sb.append("a");
break;
case 'Å':
sb.append("A");
break;
case 'ç':
sb.append("c");
break;
case 'Ç':
sb.append("C");
break;
case 'é':
sb.append("e");
break;
case 'É':
sb.append("E");
break;
case 'è':
sb.append("e");
break;
case 'È':
sb.append("E");
break;
case 'ê':
sb.append("e");
break;
case 'Ê':
sb.append("E");
break;
case 'ë':
sb.append("e");
break;
case 'Ë':
sb.append("E");
break;
case 'í':
sb.append("i");
break;
case 'ì':
sb.append("i");
break;
case 'ï':
sb.append("i");
break;
case 'î':
sb.append("i");
break;
case 'Ï':
sb.append("I");
break;
default:
sb.append(c);
break;
}
}
return sb.toString();
}
}
我也尝试将characterset更改为UTF-16,但这次它抛出了不同的错误:
build.xml:152: com.ibm.team.repository.common.validation.PropertyConstraintException: Validation errors for item: type = CompilePackage, itemId = [UUID _ORXiULV3Eea3M7KtSY0KHw]
Value of attribute "compileSources.errors.sourceText" is 67854 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 58296 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 36105 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 127899 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 155844 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 120795 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 81561 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 33264 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 35163 bytes, which is greater than the allowed encoded length of 32768 bytes.
Value of attribute "compileSources.errors.sourceText" is 96396 bytes, which is greater than the allowed encoded length of 32768 bytes.
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.failIfNecessary(RdbRepositoryDataMediator.java:456)
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.validateItem(RdbRepositoryDataMediator.java:405)
有人可以为此提供帮助吗?
谢谢和问候,
Vijay Reddy。
答案 0 :(得分:0)
我在编码级别上尝试了多种方法。没有任何效果。
最后我尝试了Berger建议,将源代码编码格式更改为UTF-8然后使用UTF-8构建一切正常。我唯一需要注意的是项目中使用的特殊字符。一旦项目级别的编码被更改,特殊字符就会更改为??符号。我需要转换所有这些?到实际的特殊字符。这是我需要花费的唯一努力。对于开发人员而言,这可能是一个混乱的情况,但由于这是开发人员/每个项目的一次性活动,这应该没问题。
感谢Berger的建议。