当前位置: 首页 > 知识库问答 >
问题:

如何解析字符串与一些UTF8字符在html: optionCollection中使用LocalValueBean的支柱?

周辉
2023-03-14

我已经阅读了资源文件,并使用html:optionsCollection创建了dropdownlist。但无法解析屏幕截图中下拉选择中显示的UTF8字符串。这应该被解析为Français(加拿大)

下面是示例代码

JSP代码:

<html:select property="locale" onchange="refreshPage(this.value)">
                                <html:optionsCollection property="dropDownList"/>
</html:select>

动作形式bean类

public void setDropDownList(Collection dropDownList){
                this.dropDownList = dropDownList;
        }

 public Collection getDropDownList(){
                if(dropDownList == null){
                        dropDownList = new Vector(10);
                        Locale availableLanguages[] = DAOFactory.getConfigurationDAO().getAvailableLanguages();
                        Properties properties = loadProperties(Locale.ENGLISH);

                        for(int i=0 ; i<availableLanguages.length ; i++){
                                String localeNameKey = "com.web.ui.localeName." + availableLanguages[i].toString();
                                String value = availableLanguages[i].toString();
                                String key = properties.getProperty(localeNameKey);
                                dropDownList.add(new LabelValueBean(key,value));
                        }
                        log.debug("size of dropdown :: "+dropDownList.size());
                }
                return dropDownList;
        }
 private Properties loadProperties(Locale locale) {
                try {
                        InputStream inputStream = null;

                        inputStream = LoginForm.class
                                        .getResourceAsStream("/resources/application_"
                                                        + locale.getLanguage() + "_" + locale.getCountry()
                                                        + ".properties");
                        if (inputStream == null) {
                                inputStream = LoginForm.class
                                                .getResourceAsStream("/resources/application.properties");
                        }
                        if (inputStream == null) {
                                throw new IllegalStateException(
                                                "Unable to load the application properties.");
                        }

                        //BufferedReader buffRead = new BufferedReader(new InputStreamReader(inputStream));
                        Properties p = new Properties();
                        p.load(inputStream);
                        return p;
                } catch (IOException e) {
                        throw new IllegalStateException(
                                        "Was not able to load the application properties.");
                }
        }

感谢任何帮助。

带有脚本的JSP代码:

<html:select property="locale" onchange="refreshAndSetValues(this.value)">
               <% Locale availableLanguages[] = DAOFactory.getConfigurationDAO().getAvailableLanguages();
                  for (int i=0; i<availableLanguages.length; i++) {
                      String localeNameKey = "com.web.gui.localeName." + availableLanguages[i].toString(); %>
                      <html:option value="<%= availableLanguages[i].toString() %>"
                            key="<%= localeNameKey %>"/>
               <% }%>
              </html:select>

Scriptlet代码读取属性文件并成功解析这些字符串。

属性文件

com.web.ui.locale=Language
com.web.ui.localeName.en_US=English
com.web.ui.localeName.fr_CA=Fran&ccedil;ais (Canada)
com.web.ui.localeName.fr_CA.decoded,Français (Canada)
com.web.ui.localeName.fr_FR=Français (France),
com.web.ui.localeName.nl_NL=Nederlands
com.web.ui.localeName.es_419=Español (América Latina)
com.web.ui.localeName.es_ES=Español (Castellano)
com.web.ui.localeName.de_DE=Deutsch

共有1个答案

岳谦
2023-03-14

你的问题就在你的房产档案里:

com.web.ui.localeName.fr_CA=Fran&ccedil;ais (Canada)

相比之下:

com.web.ui.localeName.fr_FR=Français (France),

由于您在文件中有一个转义,而JSP转义了转义,您应该删除转义并从法国行复制单词。

 类似资料:
  • 问题内容: 我想从我的字符串中删除以下所有字符 “> [],-” 目前我正在这样做。但必须有一个更有效的方法 问题答案: 使用描述要替换的所有字符的正则表达式,以及替换与该正则表达式匹配的所有内容的方法: (编辑:实际上,我认为不应该转义。而且我忘记了将反斜杠加倍,因为它们会被解释两次:一次是由Java编译器,一次是由正则表达式引擎。)

  • 问题内容: 我有一个包含1-n纬度/经度记录的JSON字符串。看起来像这样: 什么是解析此值以获取经纬度值循环的好方法?转义的双引号是否会影响解析? 谢谢亚历克斯 问题答案: 打印…

  • 我需要使用jsonpath解析例子1中的json,类似于下面的例子2。但找不到路径,因为json的类型是字符串。请建议我一些可能的方法来解析json字符串,以动态地修改colourCode的值。 例1: 例2: Jsonpath: 这将返回"iPhone"

  • 我有一个输入表单,允许某人键入unicode字符。所以它可能是类似于“嘿,uF32A怎么了?如果我得到这个字符串,它将有一个子字符串“\uF32A”,我如何将其转换为字符“\uF32A”?

  • 问题内容: 我在从字符串中删除非utf8字符时出现问题,这些字符无法正确显示。像这样的字符0x97 0x61 0x6C 0x6F(十六进制表示) 删除它们的最佳方法是什么?正则表达式还是其他? 问题答案: 使用正则表达式方法: 它搜索UTF-8序列,并将其捕获到组1中。它还与无法标识为UTF-8序列的一部分的单个字节匹配,但不捕获这些字节。替换是捕获到组1中的任何内容。这将有效删除所有无效字节。

  • 问题内容: 我想要一个Cookie字符串(因为它可能会在Set-Cookie标头中返回),并且能够轻松修改其中的一部分,特别是到期日期。 我看到有几种不同的Cookie类,例如BasicClientCookie,但是我看不到任何简单的方法来将字符串解析为这些对象之一。 我在api级别9中看到他们添加了具有解析方法的HttpCookie,但是我需要在以前的版本中工作。 有任何想法吗? 谢谢 问题答案