我使用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 :: functions都具有相同的行爲。
我知道我可以使用toupper。 toupper保持語言環境。但我想使用stringr函數並理解我做錯了什麼。
如何在字符串上保留相同的語言環境/格式?
[更新] 似乎問題已連接到R Tools for Visual Studio 0.4.20623.1711。我需要在R工具 - >選項 - >高級 - >代碼頁下指定「代碼頁」。它被設置爲(OS默認)。將其更改爲西歐(ISO)將其修正。
由於我得到所有''這是不可重現的我的區域'這是一個丹麥字母測試:ÆØÅ..「; 「這是對丹麥語字母的測試:ÆØÅ..」 [1]「這是對丹麥語字母的測試:ÆØÅ..」'我的語言環境設置爲locale: [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
請將解決方案作爲回答來完成問題。 –