2017-05-24 20 views
0

私はutf-8として以下の文字列を持っています。私はペルシャユニコードに変換したい:utf-8文字列をペルシア語のユニコードに変換する

ابراز داشت: امام رضا برخال� دیگر ائمه با جنگ نرم 

this site正しく変換を行うと、結果は次のとおりです。ابرازداشت:امامرضابرخالفدیگرائمهباجنگنرم

私は多くの方法や方法をテストするが、これを解決することはできません

string result = Encoding.GetEncoding("all type").GetString(input); 

byte[] preambleBytes= Encoding.UTF8.GetPreamble(); 
byte[] inputBytes= Encoding.UTF8.GetBytes(input); 
byte[] resultBytes= preambleBytes.Concat(inputBytes).ToArray(); 

string result=Encoding.UTF8.GetString(resultBytes.ToArray()); 
string resultAscii=Encoding.Ascii.GetString(inputBytes); 
string resultUnicode=Encoding.Unicode.GetString(inputBytes); 
:問題は、例えば、次の2行は、所望の結果を生じませんでした
+0

@dasblinkenlight、私は '文字列結果= Encoding.GetEncoding( "すべてのタイプ")をテスト。のGetString(inpud)' or' Encoding.UTF8.GetBytes(入力)とEncoding.UTF8.GetString'および他の多くを傾向。 – Nigje

+1

それはhttps://stackoverflow.com/a/31960245/298573 – VahidN

+0

の複製です@VahidN、私はそれを検索しましたが、私はこの質問は表示されません。あなたのリンクを読んで、何が問題なのか理解しています。別の検索でそれを修正しました。 – Nigje

答えて

1

What is problemSolutionを読んで問題が分かります。

私は[]をバイトを 文字列を変換し

、私はUTF-8形式として変換することを余儀なくされたが、本当に、私は変換するためのデフォルト形式を使用する必要があります。

False converting: 
byte[] bytes = Encoding.UTF8.GetBytes(inputString); 
resultString = Encoding.UTF8.GetString(bytes); 

しかし

True converting: 
byte[] bytes = Encoding.Default.GetBytes(inputString); 
resultString = Encoding.UTF8.GetString(bytes); 

ご意見と回答のためのタンク。

+0

実際には、 'Encoding.GetEncoding(" Windows-1252 ")'と 'Encoding.Default'は異なる設定と言語で異なる場合があります。 – VahidN

1

Encoding.Convertを使用できます。

string source = // Your source 
byte[] utfb = Encoding.UTF8.GetBytes(source); 
byte[] resb = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-6"), utfb); 
string result = Encoding.GetEncoding("ISO-8859-6").GetString(resb); 

注:私がISO-8859-6(アラビア語)を使用した例では、どの標準が必要かわかりませんでした。

0

次のように、UTF8でバイトを取得し、既定で文字列を取得します。これは私のために働いた。

byte[] bytes = Encoding.UTF8.GetBytes(inputString); 
resultString = Encoding.Default.GetString(bytes); 
関連する問題