アプリケーションでいくつかの電子メール通信を表示するために実行するかなりのプロセスがあります。できるだけ一般的なものにしようとしています...
-XML 経由でサービスにリクエストを送信します -XML 応答文字列を取得し、その文字列をメソッドに送信して、無効な文字を次のようにエンコードします。
public static String convertUTF8(String value) {
char[] chars = value.toCharArray();
StringBuffer retVal = new StringBuffer(chars.length);
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
int chVal = (int)c;
if (chVal > Byte.MAX_VALUE) {
retVal.append("&#x").append(Integer.toHexString(chVal)).append(";");
} else {
retVal.append(c);
}
}
return retVal.toString();
}
次に、文字列の結果を別のメソッドに送信して、他の無効な文字を削除します。
public static String removeInvalidCharacters(String inString)
{
if (inString == null){
return null;
}
StringBuffer newString = new StringBuffer();
char ch;
char c[] = inString.toCharArray();
for (int i = 0; i < c.length; i++)
{
ch = c[i];
// remove any characters outside the valid UTF-8 range as well as all control characters
// except tabs and new lines
if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r')
{
newString.append(ch);
}
}
return newString.toString();
}
- この文字列は、SaxParser を介して「非整列化」されます。
- オブジェクトは、ページを作成するための呼び出し元の jsp/javascript への応答を生成する Display アクションに送り返されます。
問題は、一部のテキストに正しく処理できない文字が含まれている可能性があることです。以下は、最終的に JSP で問題なくレンダリングされます。
<PrvwCommTxt>This is a new test. Have a*&#xc7;&#xb4;)&#xa1;.&#xf1;&#xc7;&#xa1;.&#xf1;*&#xc7;&#xb4;)...</PrvwCommTxt>
「This is a new test. Have a*Ç´)¡.ñÇ¡.」と表示されます。ブラウザで。
-上記のテキストにカーソルを合わせると、ツールチップに次のように表示されます。
<CommDetails>This is a new test. Have a*Ç´)¡.ñÇ¡.ñ*Ç´)¡.ñ*´)(¡.ñÇ(¡.ñÇ* Wonderful Day!</CommDetails>
これは、すべての HEX 値を使用してツールチップ JavaScript でレンダリングされ、正しくレンダリングされない場合、正しく表示されません。
不明な文字を JavaScript で正しく表示する方法について何か提案はありますか?