2016-11-11 1 views
-5

ので、私はデンマーク文字(æ)を含む文字列、と言っている:この文句を言わないデンマークの文字を置き換える

newString = textString .Replace("æ", "e"); 

が交換されていないいくつかの理由で

string textString = "tæst"; string newString = "";

正しく、それはnewString = "test"であると思われるときにはnewString = "tæst"になります。

ただし、いつも

私は複数のサーバーでテストしましたが、これは正しくとして返されます。これは"tæst"です。

私は、文字列がutf8文字列として認識されない可能性があり、おそらくutf8として認識されるべきであると考えています。ちょうど推測、あなたはアイデア/推測がありますか?

おかげ

+5

再現可能なコードを提供できますか? 'string new =" ";'は有効なC#コードではありません。 – rbm

+0

申し訳ありません、ただ修正しました。 –

+0

_same_ '.exe'が別のサーバで異なる結果を生成していると言っていますか? – rbm

答えて

4

ほとんどのUnicode文字が非常に似ていることができ、複数のバージョンを持っている例:。。。。11①⑴

var s = "æӕ".Replace("æ", "ae"); // s = "aeæ" 
var v = "æӕ".Select(c => (int)c).ToArray(); // { 230, 1237 } 
私は(それがユーザーの入力に来る場合は特に)予期しないを期待するのは良い習慣を検討

var s = "æӕ"; 
var a = s.ToCharArray(); // or use StringBuilder for non 1 to 1 character replacements 

for (int i = 0; i < s.Length; i++) 
    if (a[i] > 127) 
     switch (a[i]) { 
      case 'æ': case 'ӕ': 
       a[i] = 'e'; break; 
      default: 
       Debug.Print("Unexpected character " + a[i]); 
     } 

s = new string(a); 

ここには無関係ですFalsehoods Programmers Believe

-1

編集。うん、質問を正しく読まなかった。 :(

RBMは、上記の正しい新しいが有効な名前ではありません。このコードが動作する

static void Main(string[] args) 
    { 
     string text = "tæst"; 
     string s = string.Empty; 

     s = text.Replace("æ", "e"); 
     Console.WriteLine(s); 
     Console.ReadKey(); 
    } 
+0

ありがとう、以前と同じ問題。いくつかのサーバーでは - s = "tæst" - 、他は - s = "test"です。 –

関連する問題