2016-08-28 4 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 및 유니 코드 문서에 문제가 있습니다. sprintf 문서에서 \ x는 ASCII 코드를 지정한다고되어 있기 때문에 실제로 ASCII 코드가 아니라 유니 코드를 지원하는 것으로 보입니다. – Ivea

답변

1

x은 원래 문자열을 나타냅니다.

  1. strsplit(..., '\\u')'\u'의 발생에서 문자열을 분할 : 작동 원리 그럼 당신은

    y = char(hex2dec(strsplit(x, '\\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

루이스에게, 답변 해 주셔서 감사합니다. 정말 도움이됩니다. 하지만 질문이 있습니다 : 왜 "x"가 "u"가 아닌 유니 코드를 나타내는가? MATLAB 문서에 문제가 있습니까? 이후 Python (나는 다른 언어에 대해 모른다) 단순히 문자열을 해독하는 데 사용됩니다 작동합니다. 또한, 위의 단순히 통해 수행 할 수 있습니다 : 의 sprintf (strrep (MySampleString, '\ U', '\ X')) 그럼에도 불구하고, 문제는 동일하게 유지 : 왜 X 대신 U의? 감사합니다. – Ivea

+0

@ user116704 무슨 뜻인지 모르겠습니다. 내 코드에서'x'는 단지 변수의 이름입니다. 당신의 코드는'sprintf'가 [documentation] (http://es.mathworks.com/help/matlab/ref/)에 따라 ASCII 코드가 16 진수 N_ 인 _character로'\ xN'을 해석하기 때문에 작동합니다. sprintf.html), 유니 코드의 경우 ASCII가 아닌 유효한 것으로 보입니다. –

+0

그래서 sprintf 설명서에 문제가 있습니까? 확실히 ASCII가 아니기 때문입니다. 나 맞아? – Ivea

관련 문제