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

时间:2016-01-26 10:14:46

标签: java json unicode utf-8 direction

我想从String类型的一些关键值中创建一个简单的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”}
如果你在链接中运行它,你会发现这是不正确的!
但也许这就是控制台的原因,如果你在摆动组件上看到它,你会看到方向反之亦然(RtL)但没有损坏
在json结构中,第一个输入始终是键,不应该通过UTF-8方向来改变它 也许你的快速解决方案是首先增加价值然后键,但我也有英语单词,我想有一个标准的方法,不再有问题
我如何通过这些三键(k1,k2,k3)和值(v1,v2,v3)来解决这个问题并制作正确的json结构?

2 个答案:

答案 0 :(得分:0)

当您从左到右和从右到左的方向打印混合的字符时,似乎控制台会感到困惑。

如果你构建字符串

.wrapper {
    background-color: #50C5B7;
    padding: 5px;
    display: flex;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
}

.image {
    width: 100%;
    height: auto;
}

.one-half {
    width:48%;
    margin-right: 4%;
    background-color: lightgrey;
    display: inline-block;
    box-sizing: border-box;
}

.vertical-align {
    flex-item-align: center;
    -webkit-align-self: center;
    -ms-flex-item-align: center;
    align-self: center;

}
.last {
    margin-right: 0;
clear:both;
}

并打印出其字符:

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

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

答案 1 :(得分:0)

这是控制台(甚至是swing组件)的原因,当我创建json并将其发送给客户端时(认为这是一个ajax请求/响应,客户端是一个JavaScript代码),js对json结构起到了很好的作用,那里没有任何问题