2017-09-05 22 views
0

私は特別な文字が含まれているように思われる文字列があります。特殊ユーロ文字

my_str         # [1] "0€ de frais de courtage" 
my_str == "0€ de frais de courtage"  # [1] FALSE 
gsub("€","X",my_str)      # [1] "0€ de frais de courtage" 
gsub("€","X","0€ de frais de courtage") # [1] "0X de frais de courtage" 

私はつまり、私はAlt-gr + Eで入力することができます一つの標準文字でそれを置き換えるしたいと思いますが。

これらの文字列は、ファイル名から来た私は、私はこれを行うことができますどのようにlist.files

を得ましたか。

EDIT:

utf8ToInt(my_str) 
# [1] 48 8364 32 100 101 32 102 114 97 105 115 32 100 101 32 99 111 117 114 116 97 103 101 
utf8ToInt(stringi::stri_enc_toutf8("0€ de frais de courtage")) 
# [1] 48 128 32 100 101 32 102 114 97 105 115 32 100 101 32 99 111 117 114 116 97 103 101 
+0

「Alt Gr + E」が「編集」を開くと混乱します。また、 'gsub("€ "、" X "、my_str)'と '' gsub( "€"、 "X"、 "0"は異なる結果を与える)の理由は異なるでしょうか? 「X」とは何ですか? – Sotos

+0

私のキーボード上では、 'Alt gr + E'で'€ '記号が得られますが、これはヨーロッパでのみ可能です。 '' X ''は何が間違っているのかを示すランダムな文字であり、なぜ同じ結果が得られないのかは私が疑問に思っているものです。それは明確ですか? –

+0

あなたの 'my_str =="コマンドラインを貼り付けてコピーすると、あなたのキーボードにAltGR + Eを使った場合と同じ文字が表示されます:U + 20AC。違いは、stackoverflowに投稿するときに失われた可能性があります別の表現(ユニコード、または生の16進数)を投稿しようとする必要があります – Aaron

答えて

0

文字列が同一に見えるが文字が異なっています。私たちが面倒のコードは8364ている間、通常ののコードが128であることがわかりポストの下部にある私のEDITで

と十分に確認してください:

gsub(intToUtf8(8364),"X",my_str) # [1] "0X de frais de courtage" 

だから私が探していたソリューションです:

gsub(intToUtf8(8364),"€",my_str) 

それは "通常の" 128azerty alt gr + Eシンボルと "間違っている" 文字を置き換えます。