我有一个JAR文件,我的所有代码都存档以便运行.我必须访问每次运行前需要更改/编辑的属性文件.我想将属性文件保存在JAR文件所在的目录中.有没有告诉Java从该目录中获取属性文件?
注意:我不想将属性文件保留在主目录中,也不希望在命令行参数中传递属性文件的路径.
我最近不得不将我正在处理的webapp的编码切换ISO-xx到utf8.一切顺利,除了属性文件.我加入-Dfile.encoding=UTF-8了eclipse.ini,普通文件工作正常.然而属性显示出一些奇怪的行为
如果我utf8从Notepad ++ 复制编码属性并将它们粘贴到Eclipse中,它们会显示并正常工作.当我重新打开属性文件时,我看到一些Unicode字符而不是正确的字符,如:
Zur\u00EF\u00BF\u00BDck instead of Zurück
Run Code Online (Sandbox Code Playgroud)
但应用程序仍然正常.如果我开始编辑属性,添加一些特殊字符并保存,它们会正确显示,但它们不起作用,所有以前工作的特殊字符都不再起作用.
当我将本地版本与CVS进行比较时,我可以在远程文件上正确地看到特殊字符,并且在更新之后我再次开始:app工作,但Eclipse显示Unicode字符.
我尝试通过右键单击并选择"其他:UTF8"来更改文件编码,但它没有帮助.它还说:"根据内容确定:ISO-8859-1"
我正在使用基于Eclipse 3.3的Java 6和Jboss Developer
我可以通过在Notepad ++中编辑属性并在Eclipse中粘贴它们来使用它,但如果有人可以帮助我在Eclipse中修复它,我将不胜感激.
国际化网络应用似乎总是一件苦差事.无论您为可插拔语言提前做多少计划,编码都会出现问题,不适合您模板的时髦措辞以及其他问题.
我认为,在决定将他们的网络应用程序国际化时,获得SO社区对程序员应该注意的一系列内容的输入会很有用.
我有一个JavaEE项目,我在其中使用消息属性文件.这些文件的编码设置为UTF-8.在文件我用的是德国的变音似ä,ö,ü.问题是,有时这些字符会被unicode替换\uFFFD\uFFFD,但不会替换为每个字符.现在,我有一个案例,其中ä和ü都被替换\uFFFD\uFFFD,但不是每个发生ä和ü.
Git diff给我看了这样的事情:
mail.adresses=E-Mail hinzufügen:
-mail.adresses.multiple=E-Mails durch Kommata getrennt hinzufügen.
+mail.adresses.multiple=E-Mails durch Kommata getrennt hinzuf\uFFFD\uFFFDgen.
mail.title=Einladungs-E-Mail
box.preview=Vorschau
box.share.text=Sie können jetzt die ausgewählten Bilder mit Ihren Freunden teilen.
@@ -6880,7 +6880,7 @@ browser.cancel=Abbrechen
browser.selectImage=übernehmen
browser.starImage=merken
browser.removeImage=Löschen
-browser.searchForSimilarImages=ähnliche
+browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
browser.clear_drop_box=löschen
Run Code Online (Sandbox Code Playgroud)
还有一些线路发生了变化,我没有碰过.我不明白为什么我会这样做.可能是上述问题的原因是什么?
我的系统:
Antergos/Arch Linux
系统编码UTF-8
Python 3.5.0 (default, Sep 20 2015, 11:28:25)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more …Run Code Online (Sandbox Code Playgroud)在我的application.properties添加一些自定义属性.
custom.mail.property.subject-message=This is a ä ö ü ß problem
Run Code Online (Sandbox Code Playgroud)
在这个类中,我有自定义属性的表示.
@Component
@ConfigurationProperties(prefix="custom.mail.property")
public class MailProperties {
private String subjectMessage;
public String getSubjectMessage() {
return subjectMessage;
}
public void setSubjectMessage(String subjectMessage) {
this.subjectMessage = subjectMessage;
}
Run Code Online (Sandbox Code Playgroud)
在这里我用我的MailProperties:
@Service
public class SimpleUnknownResponseMessage extends MailProperties implements UnknownResponseMessage{
private JavaMailSender javaMailSender;
@Autowired
public SimpleUnknownResponseMessage(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
@Override
public void placeUnknownResponse(BookResponse bookResponse) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8");
helper.setSubject(this.getSubjectMessage());
javaMailSender.send(message); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个纯文本阅读器应用程序.有时app无法自动确定文件的编码,因此用户需要从编码列表中选择编码.如果此列表包含所有支持的编码,则它将太长.我想提供一个简化的列表,只包含每种语言最常见的编码.
这是我所知道的一些关系:
如果您知道任何其他语言最常见的编码,请告诉我.
我有幸将完整的工作区,项目和文件的编码更改为UTF-8编码.我们有几个Resourcebundles,用于使用unicode编写特殊字符.我们还希望通过切换到UTF-8来摆脱那个unicode的东西,所以我也改变了Resourcebundles(.properties)文件的编码并替换了Unicode字符.
我们也有德国资源捆绑和一些像
Ä,Ö,Ü,ß.ä,ö,ü以及像"或"这样的特殊字符
在浏览器中未正确显示.例:
Resourcebundleentry:
executeShellCommand.label =Shellkommandoausführen
浏览器结果:

使用Java.util.ResourceBundle.getString(String key)方法读取resourcebundle:
public String getLocalizedString(ResourceBundle bundle, String key) {
try {
System.out.println("getLocalizedString, key: " + key + ", resourcebundle: " + bundle.getString(key));
return bundle.getString(key);
} catch (MissingResourceException e) {
return key;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我检查上面的Sysout的输出我得到以下:
getLocalizedString, key: executeShellCommand.label, resourcebundle: Shellkommando ausführen
似乎getString(key)方法在将字符串从字符串读取到标准resourcbundleencoding(ISO-8859)时更改字符的编码.
我试图解决这个问题:
public String getLocalizedString(ResourceBundle bundle, String key) {
try {
System.out.println("getLocalizedString, key: " + key + ", resourcebundle: " + new String (bundle.getString(key).getBytes(), "UTF-8"));
return …Run Code Online (Sandbox Code Playgroud) 我想在JavaFX中添加UTF-8 Farsi字符,但是当我添加带有波斯语内容的标签时,它会显示一些奇怪的结果.
我是否必须使用特定的插件或配置来处理此问题?
我想允许国际化到我的Java Swing应用程序.我使用捆绑文件来保留其中的所有标签.
作为测试,我试图将瑞典标题设置为a JButton.所以在我写的包文件中:
nextStepButton=nästa
Run Code Online (Sandbox Code Playgroud)
在我写的Java代码中:
nextStepButton.setText(bundle.getString("nextStepButton"));
Run Code Online (Sandbox Code Playgroud)
但是按钮的标题字符在运行时出现错误:

我正在使用支持Unicode的Tahoma字体.当我通过代码手动设置按钮标题时,它看起来很好:
nextStepButton.setText("nästa");
Run Code Online (Sandbox Code Playgroud)
知道为什么它在捆绑文件中失败了吗?
--------------------------------------------> 编辑:编码标题:
我尝试使用代码编码来自bundle文件的文本:
nextStepButton.setText(new String(bundle.getString("nextStepButton").getBytes("UTF-8")));
Run Code Online (Sandbox Code Playgroud)
结果仍然是:

我正在尝试使用i18n在java中使用来自互联网的示例ttf文件的devanagari/hindi.
我能够加载资源包条目,并加载ttf和设置字体,但它不会根据需要呈现jlabel.它显示了代替字符的块.如果我在eclipse中调试,我可以将鼠标悬停在unicode变量上,甚至可以渲染devanagari.下面是代码和资源包供参考.
package i18n;
import java.awt.Font;
import java.awt.GridLayout;
import java.io.InputStream;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyNumbers extends JFrame {
private ResourceBundle rb;
private Font devanagariFont;
public MyNumbers (String language, String fontFile) {
loadResourceBundle(language);
loadFont(fontFile);
display();
}
private void display() {
String unicode = null;
JPanel labels = new JPanel(new GridLayout(0,2));
JLabel uni = null;
for(int i=0; i<=10; i++) {
unicode = rb.getString("" +i);
labels.add(new JLabel("" + i));
labels.add(uni = new JLabel(unicode));
uni.setFont(devanagariFont);
} …Run Code Online (Sandbox Code Playgroud) java ×8
utf-8 ×5
encoding ×4
eclipse ×2
properties ×2
indic ×1
javafx ×1
mojibake ×1
multilingual ×1
spring ×1
spring-boot ×1
swing ×1