相关疑难解决方法(0)

UTF-8和UTF-16之间的区别?

UTF-8和UTF-16之间的区别?我们为什么需要这些?

MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "This is some text";

md.update(text.getBytes("UTF-8")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();
Run Code Online (Sandbox Code Playgroud)

java unicode utf-8 utf-16 utf

134
推荐指数
3
解决办法
11万
查看次数

64
推荐指数
3
解决办法
5505
查看次数

我应该怎么写三个点?

简单的问题:我想设置一个TextView,我希望有三个点(省略号).喜欢

Read more...< - 现在我确定我不应该只写入...字符串.我应该怎么写这三个点?

java ellipsis

16
推荐指数
2
解决办法
7401
查看次数

Java如何将3字节Unicode字符装入char类型?

所以Java中的'char'是2个字节.(可以从这里验证.)

我有这个示例代码:

public class FooBar {
    public static void main(String[] args) {
        String foo = "€";
        System.out.println(foo.getBytes().length);
        final char[] chars = foo.toCharArray();
        System.out.println(chars[0]);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

3
€
Run Code Online (Sandbox Code Playgroud)

我的问题是,Java如何将3字节字符装入char数据类型?顺便说一句,我正在使用参数运行应用程序:-Dfile.encoding = UTF-8

此外,如果我进一步编辑代码并添加以下语句:

File baz = new File("baz.txt");
final DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(baz));
dataOutputStream.writeChar(chars[0]);
dataOutputStream.flush();
dataOutputStream.close();
Run Code Online (Sandbox Code Playgroud)

最终文件"baz.txt"将只有2个字节,即使我将其视为UTF-8文件,它也不会显示正确的字符.

编辑2:如果我用UTF-16 BE编码打开文件"baz.txt",我会在文本编辑器中看到€字符就好了,我觉得这很有道理.

java unicode utf-8

13
推荐指数
2
解决办法
1920
查看次数

Java中String的内存使用情况

我在Java中有一个包含String的对象.我很好奇String的内存使用情况如何.我正在尝试优化我的程序的内存使用量,应用程序将有大约10000个这样的对象.对于诸如"Hello World"之类的字符串,内存使用量是多少?

java memory string

9
推荐指数
1
解决办法
1万
查看次数

为什么Java String.length在具有unicode字符的平台之间不一致?

根据String.lengthJava文档

public int length()

返回此字符串的长度。

长度等于字符串中Unicode代码单元的数量。

指定者:

接口CharSequence中的length

返回值:

此对象表示的字符序列的长度。

但是我不明白为什么下面的程序HelloUnicode.java在不同的平台上产生不同的结果。根据我的理解,Unicode代码单元的数量应该相同,因为Java应该总是以UTF-16表示字符串

public class HelloWorld {

    public static void main(String[] args) {
        String myString = "I have a  in my string";
        System.out.println("String: " + myString);
        System.out.println("Bytes: " + bytesToHex(myString.getBytes()));
        System.out.println("String Length: " + myString.length());
        System.out.println("Byte Length: " + myString.getBytes().length);
        System.out.println("Substring 9 - 13: " + myString.substring(9, 13));
        System.out.println("Substring Bytes: " + bytesToHex(myString.substring(9, 13).getBytes()));
    }

    // Code from /sf/answers/689873691/
    private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); …
Run Code Online (Sandbox Code Playgroud)

java string encoding

8
推荐指数
1
解决办法
130
查看次数

Java使用UTF-8或UTF-16编码?

我已经阅读了以下帖子:

  1. 什么是Java的String内部代表?修改过的UTF-8?UTF-16?
  2. https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

现在考虑下面给出的代码:

public static void main(String[] args) {
    printCharacterDetails("?");
}

public static void printCharacterDetails(String character){
    System.out.println("Unicode Value for "+character+"="+Integer.toHexString(character.codePointAt(0)));
    byte[] bytes = character.getBytes();
    System.out.println("The UTF-8 Character="+character+"  | Default: Number of Bytes="+bytes.length);
    String stringUTF16 = new String(bytes, StandardCharsets.UTF_16);
    System.out.println("The corresponding UTF-16 Character="+stringUTF16+"  | UTF-16: Number of Bytes="+stringUTF16.getBytes().length);
    System.out.println("----------------------------------------------------------------------------------------");
}
Run Code Online (Sandbox Code Playgroud)

当我尝试character.getBytes()在上面的代码中调试行时,调试器将我带入getBytes()String类的方法,然后进入static byte[] encode(char[] ca, int off, int len)StringCoding类的方法.String csn = Charset.defaultCharset().name();在调试过程中,encode method()的第一行返回"UTF-8"作为默认编码.我预计它会是"UTF-16".

该计划的输出是:

最大的Unicode值= 6700 UTF-8字符=最| 默认值:字节数= 3

相应的UTF-16字符= | UTF-16:字节数= 6 …

java encoding default utf-8 utf-16

6
推荐指数
1
解决办法
1万
查看次数

Java char数组是否始终是有效的UTF-16(Big Endian)编码?

假设我将Java字符数组(char[])实例编码为字节:

  • 为每个字符使用两个字节
  • 使用大端编码(在最左边的最左边存储最高8位,在最右边的字节存储最不重要的8位)

这总是会创建一个有效的UTF-16BE编码吗?如果不是,哪些代码点将导致无效编码?


这个问题与关于Java char类型的这个问题以及关于Java字符串的内部表示的这个问题非常相关.

java arrays unicode char character-encoding

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

字符串vs字节数组表示

  1. 我想知道哪种字符串表示形式(正常的字符串或字节数组)需要更多的存储空间?

  2. 我的代码中可以使用字节数组表示形式。在通过网络传输它之前(响应AJAX调用),我应该将其转换为String吗?

java string bytearray

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

在java中,String是一个类,它是如何限制大小的

我知道字符串享有一些特权,它在java中被定义为类.作为该帖子的引用Java程序中的字符串大小是否有限制?字符串的大小约为2 ^ 31-1.所以我的问题是类如何限制大小分配,因为我知道类可以分配尽可能多的内存块

java string class

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

字符串包含多少字节?

public class ClassToTestSnippets {

    private static ClassToTestSnippets ctts;

    public static void main(String[] args) {
        ctts = new ClassToTestSnippets();
        ctts.testThisMethod();
    }

    public void testThisMethod() {
        System.out.println("\u2014".length()); //answer is 1
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印1.不过\u2014E2 80 94即3个字节.我如何知道字符串包含多少字节?

java string unicode utf-8

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