我如何更改看起来相同的字符串字节

how can i change bytes of string that look the same

我要检查文件名长度

当我检查从 mac 中获得的文件名长度与我在 IDE(Intellij) 中输入的名称长度不同时。

所以,我取出字符串的字节并将其打印到控制台,但它是不同的。 我想要的案例是长度,就像我输入 IDE 一样。 这可能吗?
我如何将字符串的 java 字节从 macString 更改为 IDEString

import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        String fileNameFromMac = "스크린샷.png";
        String typedInIDE = "스크린샷.png";

        System.out.println("File Name From Mac Length : " + fileNameFromMac.length());
        System.out.println("typedInIDE : " + typedInIDE.length());

        byte[] fileNameFromMacBytes = fileNameFromMac.getBytes(StandardCharsets.UTF_8);
        byte[] typedInIDEBytes = typedInIDE.getBytes(StandardCharsets.UTF_8);

        for(byte b : fileNameFromMacBytes) {
            System.out.print(b);
        }
        System.out.println();
        for(byte b : typedInIDEBytes) {
            System.out.print(b);
        }
    }
}

这是 Unicode normalization 的区别。规范化为相同形式后,它们将具有相同的长度(和相同的字节数):

import java.text.Normalizer;

public class Main {
    public static void main(String[] args) {
        String fromMac = "스크린샷.png";
        String fromIDE = "스크린샷.png";

        System.out.println("From Mac length: " + fromMac.length());
        System.out.println("From IDE length: " + fromIDE.length());

        String normFromMac = Normalizer.normalize(fromMac, Normalizer.Form.NFD);
        String normFromIDE = Normalizer.normalize(fromIDE, Normalizer.Form.NFD);

        System.out.println("Normalized from Mac length: " + normFromMac.length());
        System.out.println("Normalized from IDE length: " + normFromIDE.length());
    }
}

这会产生以下输出:

From Mac length: 14
From IDE length: 8
Normalized from Mac length: 14
Normalized from IDE length: 14

有关详细信息,请参阅 Oracle Java Tutorial