我需要在使用Java的资源属性中使用UTF-8 ResourceBundle
.当我将文本直接输入属性文件时,它显示为mojibake.
我的应用在Google App Engine上运行.
谁能举个例子?我无法完成这项工作.
java google-app-engine resourcebundle utf-8 internationalization
放置在资源包中时,撇号无法正确转换.
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
Run Code Online (Sandbox Code Playgroud)
如果我从java.util.ResourceBundle
这里的问题格式化上面的键,撇号会被错过?
摘要
我的JUnit测试没有找到执行期间所需的文件.我正在使用Maven进行依赖管理和编译.
细节
测试用例所需的所有文件都位于:src/test/resources
.
例如,src/test/resources/resourceFile.txt
.
要访问资源,我使用以下代码:
URL url = getClass().getResource("/resourceFile.txt").getFile();
File file = new File(url);
Run Code Online (Sandbox Code Playgroud)
但后来file.exists()
回归false
.而我得到的错误是:
Tests in error:
myJUnitTestCase(tests.MyJUnitTestClass): /home/me/workspace/Project%20Name/target/test-classes/resourceFile.txt (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
注意,以下内容给出了相同的错误(注意删除的/
前缀):
URL url = getClass().getClassLoader().getResource("resourceFile.txt").getFile();
File file = new File(url);
Run Code Online (Sandbox Code Playgroud)
似乎来自的文件src/test/resources
没有被复制到target/test-classes
.
有任何想法吗?
以下问题没有帮助
为什么我不能在使用Maven的Junit测试运行中访问src/test/resources?
软件版本
Ubuntu 12.04
Apache Maven 2.2.1
Java 1.7.0
Eclipse(面向Web开发人员的Java EE IDE)Indigo Service Release 2
(截断)Maven POM
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.groupId</groupId>
<artifactId>artifactId</artifactId> …
Run Code Online (Sandbox Code Playgroud) 我已经在资源包中存储了一些消息.我正在尝试格式化这些消息,如下所示.
import java.text.MessageFormat;
String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);
Run Code Online (Sandbox Code Playgroud)
假设第一个参数即实际消息存储在以某种方式检索的属性文件中.
第二个参数即5是一个动态值,应该放在{0}
不会发生的占位符中.下一行打印,
您即将删除{0}行.
占位符不会替换为实际参数.
这是撇号 - You're
.我试图像往常一样逃避它,就You\\'re
好像它不起作用.要使其发挥作用需要做哪些改变?
我有一个名为mybundle.txt
在c:/temp
-
c:/temp/mybundle.txt
如何将此文件加载到java.util.ResourceBundle
?该文件是有效的资源包.
这似乎不起作用:
java.net.URL resourceURL = null;
String path = "c:/temp/mybundle.txt";
java.io.File fl = new java.io.File(path);
try {
resourceURL = fl.toURI().toURL();
} catch (MalformedURLException e) {
}
URLClassLoader urlLoader = new URLClassLoader(new java.net.URL[]{resourceURL});
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle( path ,
java.util.Locale.getDefault(), urlLoader );
Run Code Online (Sandbox Code Playgroud) 为了提高网页的性能,我们建议使用CDN来提供.js
网页上的文件.那讲得通.
此外,我们建议捆绑我们的.js
文件,以减少加载时对服务器的请求数.
因此,如果我们使用CDN或捆绑.js
文件,我们需要坐下来做出决定.
优缺点都有什么?哪些更有意义?
您可以使用Java ResourceBundle执行以下操作吗?
在属性文件中......
example.dynamicresource=You currently have {0} accounts.
Run Code Online (Sandbox Code Playgroud)
在运行时......
int accountAcount = 3;
bundle.get("example.dynamicresource",accountCount,param2,...);
Run Code Online (Sandbox Code Playgroud)
给出结果
"你目前有3个账户."
我正在尝试创建一个实用程序类,ReadPropertyUtil.java
用于从属性文件中读取数据.虽然我的类位于util目录下,但我的skyscrapper.properties
文件放在其他目录中.
但是,当我尝试使用属性访问时[ResourceBundle][1]
,我得到异常,无法加载该包.
下面是我如何阅读属性的代码,以及显示我的目录结构的图像.
ReadPropertiesUtil.java
/**
* Properties file name.
*/
private static final String FILENAME = "skyscrapper";
/**
* Resource bundle.
*/
private static ResourceBundle resourceBundle = ResourceBundle.getBundle(FILENAME);
/**
* Method to read the property value.
*
* @param key
* @return
*/
public static String getProperty(final String key) {
String str = null;
if (resourceBundle != null) {
str = resourceBundle.getString(key);
LOGGER.debug("Value found: " + str + " for key: " + key); …
Run Code Online (Sandbox Code Playgroud) 我试图用来从属性文件中ResourceBundle#getStringArray
检索一个String[]
.文档中对此方法的描述如下:
从此资源包或其父项之一获取给定键的字符串数组.
但是,我尝试将值作为多个单独的键/值对存储在属性文件中:
key=value1
key=value2
key=value3
Run Code Online (Sandbox Code Playgroud)
并以逗号分隔的列表:
key=value1,value2,value3
Run Code Online (Sandbox Code Playgroud)
但这些都不是可以使用的ResourceBundle#getStringArray
.
如何在属性文件中表示一组键/值对,以便可以使用它们进行检索ResourceBundle#getStringArray
?
脚本文件名:
jquery.transit.min.js
Run Code Online (Sandbox Code Playgroud)
该文件位于Scripts文件夹中,
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui")
.Include("~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval")
.Include("~/Scripts/jquery.unobtrusive*", "~/Scripts/jquery.validate*"));
bundles.Add(new ScriptBundle("~/bundles/jtransit")
.Include("~/Scripts/jquery.transit*"));
Run Code Online (Sandbox Code Playgroud)
在我的View
,
@Scripts.Render("~/bundles/jquery","~/bundles/jtransit")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
Run Code Online (Sandbox Code Playgroud)
渲染 HTML
<script src="/Scripts/jquery-1.8.3.js"></script>
<script src="/Scripts/jquery-ui-1.9.2.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
Run Code Online (Sandbox Code Playgroud)
jquery.transit.min.js
不会被渲染.我错过了什么?
resourcebundle ×10
java ×8
asp.net ×1
asp.net-mvc ×1
cdn ×1
javascript ×1
jquery ×1
junit ×1
maven ×1
properties ×1
unit-testing ×1
utf-8 ×1