2016-08-28 16 views
-1

次の文字列を持っていますが、どうやってそれを通常の文字列に変換できますか(最初はアラビア文字が含まれています)?MATLABでユニコード文字を変換する

\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 

ありがとうございます。

+0

なぜ反対票を意味するもの

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

ないアイデアを与えません! あなたの質問ではない、あるいは単純にその質問を気にせず、それを非常に簡単に見つけたら、それを無視して少し尊厳を示してください! – Ivea

+0

私は人々があなたの努力をあまりにも少なくしたと思うと思う。しかし、私はあなたがサンプルコードを提供する手がかりを持つ必要があると思いますので、気にする必要はありません。私は質問が大丈夫だと思うので、少なくとも私からの+1 :) – patrik

+0

あなたの視点のためのおかげでpartrik。しかし、私が以下にコメントしたように、MATLABのASCIIとUnicodeのドキュメントには問題があります。 sprintfのドキュメントでは、\ xはASCIIコードを指定すると言われていますが、実際はASCIIではなくUnicodeをサポートしているようです。 – Ivea

答えて

1

xを元の文字列とします。そして、あなたはどのように動作する

y = char(hex2dec(strsplit(x, '\\u')).'); 

を使用することができます。

  1. strsplit(..., '\\u')'\u'の出現で文字列を分割します。結果は、(サブ)文字列のセル配列です。
  2. hex2dec(...).'は、各文字列を16進数として解釈し、10進数に変換します。結果は数値の行ベクトルです。
  3. 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' 

コードは、それが:-)

+0

親愛なるLuis、 ご回答いただきありがとうございます。本当に役に立ちます。しかし、疑問があります。なぜ "x"は "u"ではなく、ユニコードを意味するのでしょうか? MATLABドキュメンテーションに問題はありますか?以来、Python(私は他の言語についてはわかりません)では、単に文字列をデコードするだけで動作します。 sprintf(strrep(MySampleString、 '\ u'、 '\ x')) でも、上記の問題は同じです。 よろしくお願いいたします。 – Ivea

+0

@ user116704あなたは何を意味するのか分かりません。私のコードでは 'x'は変数の名前です。あなたのコードに関しては、 'sprintf'が[documentation](http://es.mathworks.com/help/matlab/ref/)に従ってASCIIコードが16進数N_の_characterとして' \ xN'を解釈するために動作します。 sprintf.html)、これはUnicodeでは有効であるようですが、ASCIIではなく –

+0

です。したがって、sprintfのマニュアルには問題があります。確かにASCIIではないからです。私は正しいですか? – Ivea

関連する問題