MATLAB中unicode字符的转换

MATLAB中unicode字符的转换,matlab,unicode,Matlab,Unicode,我有以下字符串,我想知道如何将其转换为常规字符串(它最初包含阿拉伯语字符) 提前感谢。让x表示原始字符串。然后你可以用 y = char(hex2dec(strsplit(x, '\\u')).'); 工作原理: strsplit(…,'\\u')在出现'\u'时拆分字符串。结果是(子)字符串的单元格数组 hex2dec(…)。将每个字符串解释为十六进制数并转换为十进制数。结果是一个数字行向量 char将每个数字转换为一个字符,生成一个字符串 对于您的示例字符串 x = '\u062a\u06

我有以下字符串,我想知道如何将其转换为常规字符串(它最初包含阿拉伯语字符)


提前感谢。

x
表示原始字符串。然后你可以用

y = char(hex2dec(strsplit(x, '\\u')).');
工作原理:

  • strsplit(…,'\\u')
    在出现
    '\u'
    时拆分字符串。结果是(子)字符串的单元格数组
  • hex2dec(…)。
    将每个字符串解释为十六进制数并转换为十进制数。结果是一个数字行向量
  • char
    将每个数字转换为一个字符,生成一个字符串
  • 对于您的示例字符串

    x = '\u062a\u0648\u062f\u0647 \u0648 \u0634\u0645\u0627\u0631 \u0633\u0627\u0632\u0648\u0627\u0631\u0647\u0647\u0627\u06cc \u0632\u0646\u062f\u0647 \u062f\u0631 \u062c\u0627 \u06cc'
    
    代码给出了

    y =
     تودهوشمارسازوارههایزندهدرجای
    

    不知道这是什么意思:-)

    亲爱的路易斯,谢谢你的回复,这真的很有帮助;但有一个问题:为什么“x”表示unicode而不是“u”?MATLAB文档有问题吗?因为,在Python中(我不知道其他语言),使用简单的字符串解码就可以了。此外,上述操作也可以通过:sprintf(strrep(MySampleString,“\u',“\x'))完成。然而,问题仍然是一样的:为什么是x而不是u?向你问好。@user116704我不知道你的意思。在我的代码中,
    x
    只是变量的名称。至于您的代码,这是因为
    sprintf
    \xN
    解释为字符,其ASCII代码是十六进制数N,根据,这似乎对Unicode有效,而不仅仅是ASCIISo,sprintf文档中存在问题,对吗?因为它肯定不是ASCII码。我说的对吗?是的,文档上说的是ASCII,但可能应该说是Unicode。然而,要确定的是,你应该在另一方面询问数学问题。在我的代码中使用
    char
    是安全的,因为它确实说它支持高达65535的Unicode点为什么投反对票?!如果这不是你的问题,或者你根本不关心这个问题,觉得它很简单,那么就忽略它,表现出一点尊严吧!我想人们认为你付出的努力太少了。然而,我想你需要一个线索来提供示例代码,所以你不需要费心。我相信这个问题是可以的,所以至少从我这里+1:)谢谢partrik的观点。但正如我在下面所评论的,MATLAB中的ASCII和Unicode文档存在一个问题。因为sprintf文档说明\x应该指定ascii代码,但实际上它似乎支持unicode,而不是ascii。我不确定这是否是一个“问题”。将其视为使用ascii码,并免费获取其余内容。对于任何你认为的unicode编码,什么标记会是第一个呢?Patrik,我只是指Luis的评论:“是的,文档上说的是ASCII,但它可能应该说unicode。不过,为了确保你应该询问Mathworks。”。
    y =
     تودهوشمارسازوارههایزندهدرجای