私はRとstringrで頑丈です。 str_trimを行う際に、str_upperなど私のデンマーク語の文字はUnicodeのcharatersに変換されていますstringr ::関数はロケールを削除または無視します
library(stringr)
library(stringi)
Clean_String <- function(string) {
#locale <- stri_locale_list()[grep("DK", stri_locale_list())]
print(c("1:", string))
string <- stringr::str_trim(string)
print(c("2:", string))
string <- stringr::str_to_upper(string, "da_DK")
print(c("3:", string))
return(string)
}
Clean_String("This IS a test with danish letters: ÆØÅ .. ")
Clean_Stringを呼び出す
は、次のような出力が得られます。
[1] "1:" "This IS a test with danish letters: ÆØÅ .. "
[1] "2:" "This IS a test with danish letters: ’\u009d\u008f .."
[1] "3:" "THIS IS A TEST WITH DANISH LETTERS: ’\u009d\u008f .."
[1] "THIS IS A TEST WITH DANISH LETTERS: ’\u009d\u008f .."
>
ので、私はライン "2:" から失敗します。ロケール "da_DK"を適用しても影響はありません。私はすべてのstringr ::関数が同じ振る舞いを持っているので、何かを見逃しているはずです。
私はtoupperを使用することができます。 toupperはロケールを保持します。しかし、私はstringr関数を使用して、私が間違っていることを理解したいと思います。
文字列に同じロケール/書式を保持するにはどうすればよいですか?
[UPDATE] この問題は、Visual Studio用Rツール0.4.20623.1711に接続されているようです。 R Tools-> Options-> Advanced-> Code Pageの下にある "Code page"を指定する必要がありました。これは(OSのデフォルト)に設定されています。それを西ヨーロッパ(ISO)に変更して修正しました。
私のロケールでは再現できません。これはすべてデンマーク語の文字列「ÆØÅ..」でテストされています。 "これはデニッシュの文字でテストされています:ÅØÅ.." [1] "これはダニッシュ文字でテストされています:"ロケールとしての私のロケール設定: [1] LC_COLLATE = English_United States.1252 [ 2] LC_CTYPE = English_United States.1252 [3] LC_MONETARY = English_United States.1252 [4] LC_NUMERIC = C [5] LC_TIME = English_United States.1252' – akrun
@akrunと同じ結果が得られます。ロケール: [1] LC_COLLATE = Dutch_Netherlands.1252 LC_CTYPE = Dutch_Netherlands.1252 LC_MONETARY = Dutch_Netherlands.1252 LC_NUMERIC = C [5] LC_TIME = Dutch_Netherlands.1252 – phiver
解決策を投稿して質問を確定してください。 –