想让JSF生成的html源代码是中文的处理方法

本文件在tomcat测试通过。


/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.myfaces.renderkit.html.util;




/**
* Converts Strings so that they can be used within HTML-Code.
*/
public abstract class HTMLEncoder
{
/**
* Variant of {@link #encode} where encodeNewline is false and encodeNbsp is true.
*/
public static String encode (String string)
{
return encode(string, false, true);
}


/**
* Variant of {@link #encode} where encodeNbsp is true.
*/
public static String encode (String string, boolean encodeNewline)
{
return encode(string, encodeNewline, true);
}

/**
* Encodes the given string, so that it can be used within a html page.
* @param string the string to convert
* @param encodeNewline if true newline characters are converted to <br>'s
* @param encodeSubsequentBlanksToNbsp if true subsequent blanks are converted to  's
*/
public static String encode (String string,
boolean encodeNewline,
boolean encodeSubsequentBlanksToNbsp)
{
if (string == null)
{
return "";
}

StringBuffer sb = null; //create later on demand
String app;
char c;
for (int i = 0; i < string.length (); ++i)
{
app = null;
c = string.charAt(i);
switch (c)
{
case '"': app = "&quot;"; break; //"
case '&': app = "&amp;"; break; //&
case '<': app = "&lt;"; break; //<
case '>': app = "&gt;"; break; //>
case ' ':
if (encodeSubsequentBlanksToNbsp &&
(i == 0 || (i - 1 >= 0 && string.charAt(i - 1) == ' ')))
{
//Space at beginning or after another space
app = "&#160;";
}
break;
case '/n':
if (encodeNewline)
{
app = "<br/>";
}
break;

//german umlauts
case '/u00E4' : app = "&auml;"; break;
case '/u00C4' : app = "&Auml;"; break;
case '/u00F6' : app = "&ouml;"; break;
case '/u00D6' : app = "&Ouml;"; break;
case '/u00FC' : app = "&uuml;"; break;
case '/u00DC' : app = "&Uuml;"; break;
case '/u00DF' : app = "&szlig;"; break;

//misc
//case 0x80: app = "&euro;"; break; sometimes euro symbol is ascii 128, should we suport it?
case '/u20AC': app = "&euro;"; break;
case '/u00AB': app = "&laquo;"; break;
case '/u00BB': app = "&raquo;"; break;
case '/u00A0': app = "&#160;"; break;

default:
if (((int)c) >= 0x80)
{
//encode all non basic latin characters
//更改的就是这句话
//app = "&#" + ((int)c) + ";";
char[] charbuf = new char[1];
charbuf[0]=c;
app=new String(charbuf);
}
break;
}
if (app != null)
{
if (sb == null)
{
sb = new StringBuffer(string.substring(0, i));
}
sb.append(app);
} else {
if (sb != null)
{
sb.append(c);
}
}
}

if (sb == null)
{
return string;
}
else
{
return sb.toString();
}
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值