utf-8 字符串附加方向不兼容

direction in attach of utf-8 strings not compatible

我想从一些字符串类型的键值中做一个简单的json,这些键值的值为utf-8,但在连接方向和连接结构之后被严重损坏

public static void main(String[] args) {
    int k1=1;
    int k2=2;
    int k3=3;
    String v1="مقدار1";
    String v2="مقدار2";
    String v3="مقدار3";

    javax.swing.JOptionPane.showMessageDialog(null, "{\""+k1+"\":\""+v1+"\",\""+k2+"\":\""+v2+"\",\""+k3+"\":\""+v3+"\"}");

    System.out.println("Json that created:\r\n"+
        "{\""+k1+"\":\""+v1+"\",\""+k2+"\":\""+v2+"\",\""+k3+"\":\""+v3+"\"}");
}

https://ideone.com/j0Vd7s

正确的结果必须是这样的:{ "1" : "مقدار3" : "3" , "مقدار2" : "2" , "مقدار1" }
如果你 运行 它在 link 你看到那是不正确的!
但也许这是控制台的原因,如果你在摆动组件上看到它,你会看到方向是相反的 (RtL) 但没有损坏
在 json 结构中,第一个输入始终是键,不应通过 UTF-8 Direction
更改它 也许您的快速解决方案是先添加值然后添加密钥,但我也有英文单词,我想有一个标准的方法来避免再次出现问题
我如何解决这个问题并通过这些三键 (k1,k2,k3) 和值 (v1,v2,v3) 构建正确的 json 结构?

当您打印具有从左到右和从右到左方向的混合字符时,控制台似乎变得混乱。

如果你构建字符串

String json = "{\""+k1+"\":\""+v1+"\",\""+k2+"\":\""+v2+"\",\""+k3+"\":\""+v3+"\"}";

并打印出它的字符:

for (int i=0; i<json.length(); i++)
     System.out.println(json.charAt(i));

你看到你确实构建了正确的字符串。在控制台视图中调试并不容易。

这是控制台(甚至是 swing 组件)的原因,当我创建 json 并将其发送给客户端时(认为这是一个 ajax request/response,客户端是 JavaScript 代码),js 对 json 结构工作得很好,没有任何问题