相关疑难解决方法(0)

什么是字符编码,为什么我要打扰它

我对字符编码的概念很困惑.

什么是Unicode,GBK等?编程语言如何使用它们?

我需要打扰他们吗?是否有更简单或更快速的编程方式,而不必麻烦自己?

encoding character-encoding

33
推荐指数
2
解决办法
2万
查看次数

从可运行的Jar创建Java中的UTF-8文件

我有一个小Java项目,我已经将类文件的属性设置为UTF-8(我使用了许多在默认CP1252上找不到的外来字符).

目标是创建一个包含项列表的文本文件(在Windows中).从Eclipse本身运行类文件时(按Ctrl + F11),它可以完美地创建文件并在另一个编辑器中打开它(我正在使用Notepad ++)我可以看到我想要的字符.

????????????????????????????????????????????????????
?                          Universidade2010 (18/18)?
?                                         hidden: 0?
????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

但是,当我将项目(使用Eclipse)导出为可运行的Jar并使用'javaw -jar project.jar'运行它时,创建的新文件是一堆问号

????????????????????????????????????????????????????
?                          Universidade2010 (19/19)?
?                                         hidden: 0?
????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我已经遵循了一些关于如何使用UTF-8(在Java上默认情况下似乎已经打破)的提示,试图纠正这个问题,所以现在我正在使用

Writer w = new OutputStreamWriter(fos, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

并将BOM标题写入文件,就像已经回答的问题一样,但在导出到Jar时仍然没有运气

我错过了一些属性或命令行命令,因此Java知道我想默认创建UTF-8文件吗?


问题不在于创建文件本身,因为在开发文件时输出正确(使用unicode字符)

创建文件的类现在(并遵循使用Charset类的建议),如下所示:

public class Printer {

    File f;
    FileOutputStream fos;
    Writer w;
    final byte[] utf8_bom = { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF };

    public Printer(String filename){
        f = new File(filename);
        try {
            fos = new FileOutputStream(f);
            w = new OutputStreamWriter(fos, Charset.forName("UTF-8"));
            fos.write(utf8_bom);
        } catch …
Run Code Online (Sandbox Code Playgroud)

java eclipse windows jar utf-8

5
推荐指数
1
解决办法
6475
查看次数

包含中文字符的无效URI(Java)

无法在URL中设置包含中文字符的URL连接.它适用于拉丁字符:

String xstr = "???????????" ;
URI uri = new URI("http","ajax.googleapis.com","/ajax/services/language/detect","v=1.0&q="+xstr,null);   
URL url = uri.toURL(); 
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream() ;
Run Code Online (Sandbox Code Playgroud)

getInputStream()调用导致:

java.lang.IllegalArgumentException: Invalid uri 'http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=???????????': Invalid query
Run Code Online (Sandbox Code Playgroud)

java url uri utf multibyte

3
推荐指数
1
解决办法
5725
查看次数

标签 统计

java ×2

character-encoding ×1

eclipse ×1

encoding ×1

jar ×1

multibyte ×1

uri ×1

url ×1

utf ×1

utf-8 ×1

windows ×1