我使用eclipse的程序输出文件有问题.i将我的eclipse设置为UTF-8并使用
System.getProperty("file.encoding")
Run Code Online (Sandbox Code Playgroud)
我得到UTF-8.i通过eclipse run-option运行我的prog并且输出(文本文件)以UTF-8编码.但是当我将源代码压缩成jar文件时,输出文件显示某些错误当在eclipse和frm jar文件中运行prog时,像.what这样的字母是什么?我必须在源代码中指定要在utf-8中编码的输出吗?请帮忙.
来自@dacwe的帮助确实产生了所需的输出.但是我可以知道如何在命令行外运行我的可执行.jar文件?-Dfile.encoding = UTF-8怎么样?
@dacwe:我尝试将源代码更改为
BufferedWriter bout = new java.io.BufferedWriter(new java.io.OutputStreamWriter(
new java.io.FileOutputStream(filename), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
但输出仍然没有正确编码.我想念的是什么?
我从GitHub(https://github.com/henrikengstrom/roygbiv)下载了多模块Scala项目,其中一个模块是Play 2.0模块.所以我可以run在每个模块上使用SBT 命令运行整个应用程序,一切正常.但是,当我添加到Play 2.0模板(index.scala.html)非英文字符并在浏览器中按F5时,我得到编译错误:
使用UTF-8解码C:\ Users ...\web\target\scala-2.9.1\src_managed\main\views\html\index.template.scala时出现IO错误请尝试使用-encoding选项指定另一个
Play 2.0模块我也使用SBT的run命令运行,而不是使用Play控制台.
我检查了源文件编码 - 它是UTF-8.还尝试了没有BOM的UTF-8.
哪里可以有问题?
如果用户没有设置默认字符集,Logback 1.1.3 LayoutWrappingEncoder文档没有说明默认字符集是什么,但源代码说:
默认情况下,此属性的值为null,对应于系统的默认字符集.
但是我正在使用PatternLayoutEncoder(带有a RollingFileAppender),它似乎是以UTF-8输出文件(我的Windows 7 Professional系统的默认字符集可能不是UTF-8).
UTF-8输出实际上是我想要的,但我想确保我没有偶然得到这个,因为文档似乎表明了别的东西.那么为什么当我没有明确指定一个字符集时,Logback会给我UTF-8输出?
我在嵌入式Linux平台上运行一个小型Java应用程序.用OpenJDK替换Java VM JamVM后,无法正确存储带有特殊字符的文件名.像变音符号这样的特殊字符被问号所取代.
这是我的测试代码:
import java.io.File;
import java.io.IOException;
public class FilenameEncoding
{
public static void main (String[] args) {
String name = "umlaute-äöü";
System.out.println("\nname = " + name);
System.out.print("name in Bytes: ");
for (byte b : name.getBytes()) {
System.out.print(Integer.toHexString(b & 255) + " ");
}
System.out.println();
try {
File f = new File(name);
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行它会提供以下输出:
name = umlaute-???
name in Bytes: 75 6d 6c 61 75 74 65 2d 3f 3f …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用spring-boot,并运行这个由spring-boot构建的jar文件作为Centos上的服务.当我运行此服务时:
服务myApp启动
我总是收到以下错误消息:
2016-08-26 09:11:02.002 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : System property 'file.encoding' is currently 'ANSI_X3.4-1968'. It should be 'UTF-8' (as defined in 'spring.mandatoryFileEncoding').
2016-08-26 09:11:02.018 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : Environment variable LANG is 'null'. You could use a locale setting that matches encoding='UTF-8'.
2016-08-26 09:11:02.018 ERROR 31900 --- [ main] o.s.b.c.FileEncodingApplicationListener : Environment variable LC_ALL is 'null'. You could use a locale setting that matches encoding='UTF-8'.
2016-08-26 09:11:02.031 ERROR 31900 --- [ main] o.s.boot.SpringApplication …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu Server Edition PC上的Glassfish Web服务器上部署了一个Java应用程序.
此应用程序必须提供的服务之一是将ISO映像安装在特定文件夹中,并将此文件夹的所有内容复制到另一个目标.
因为一旦我的Java方法找到了一个西里尔文件名,它就崩溃了.此文件名在服务器应用程序日志中显示为"??????????????.txt".
首先我认为这是一个linux问题,因为这个文件在终端中也显示不正确.在我添加CP1251语言环境后,linux终端中的问题已经解决,但我的应用程序仍然抛出错误.
UbuntuForums的一个人(http://ubuntuforums.org/showthread.php?t=1813920)建议我用"convmv"实用程序转换这个坏文件,但是这个实用程序的输出表明这个文件已经是UTF-8了.
之后我用相同的方法创建了一个测试应用程序并在同一台PC上运行,就像"java Test $ arguments $"一样.
它确实奏效了!
简单的System.out.println方法正确显示文件名,并成功将问题文件复制到另一个文件夹.
这个事实让我别无选择,只能声称Glassfish是我的班级,java和linux之间的差距(虽然我不确定它是如何可能的).
在Glassfish中是否有任何字符编码特定设置我可以纠正以修复此错误或者我可能遗漏了一些问题并不是真的存在?
提前致谢!
安德鲁
我想在java中使用无穷大符号(侧面8个).
此外,我想将它用作String组件.
我没有找到一个有效的charcode/ascii代码(有没有?).
我试过了:
String s=Character.toString(236);
String s=Character.toString('236');
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我现在得到了这个:
System.out.println(Character.toString('\u221E'));
Run Code Online (Sandbox Code Playgroud)
但输出是 ?
我正在使用java 1.7 jdk和eclipse.为什么无穷大的迹象没有出现?
我正在努力让Eclipse正确阅读中文字符,我不确定我的错误在哪里.
具体来说,在从控制台读取一串中文(简体或繁体)并输出它之间的某处,它会出现乱码.即使输出大量混合文本(英文/中文字符),它似乎只会改变汉字的外观.
我把它剪切到下面的测试示例,并明确地用我认为在每个阶段发生的事情注释它 - 注意我是一名学生,非常想确认我的理解(或其他):)
public static void main(String[] args) {
try
{
boolean isRunning = true;
//Raw flow of input data from the console
InputStream inputStream = System.in;
//Allows you to read the stream, using either the default character encoding, else the specified encoding;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
//Adds functionality for converting the stream being read in, into Strings(?)
BufferedReader input_BufferedReader = new BufferedReader(inputStreamReader);
//Raw flow of outputdata to the console
OutputStream outputStream = System.out;
//Write a …Run Code Online (Sandbox Code Playgroud) 我已经读过使用平台默认字符编码的坏主意,例如在阅读文本文件并将文本导入数组等时.您能否解释一下这可能会影响跨平台性能,以及如何解决这个问题?是否存在应该用于跨平台应用程序的编码?谢谢
这是一个"元问题",当我试图为我的另一个问题找到更好的规范时,我遇到了这个问题(在Mac OS X上的Java Swing JComponent中渲染Devanagari连字符(Unicode)).
到目前为止我还不太了解的是给定系统的哪个"组件"(想要更好的词)负责在Java中显示Unicode文本,更具体地说是连字.
据我了解,以下组件对流程有影响:
Charset(默认情况下是Mac OS X 10.6上的MacRoman,Windows 7上的cp1252)."字体包含有关他们正在使用的编码的信息".
因此,如果一串Unicode字符无法正确显示(如我的另一个问题所示,sa),问题最可能出在哪里?即,什么"组件"(更好的词会是什么?)负责"绑定"结扎,它的组成?
非常感谢您提前,如果您需要更多信息,请告诉我.