[英]UTF-8 support in R on Windows
Since new function 'Beta: Use Unicode UTF-8 for worldwide language support' is added on Windows10, I thought it is possible for R to convert locale environment to UTF-8. 但是,當我嘗試將系統區域設置更改為 UTF-8 時
Sys.setlocale(locale = "Japanese_Japan.65001")
或者
Sys.setlocale(locale = "Japanese_Japan.UTF-8")
我明白了
In Sys.setlocale("Japanese_Japan.65001") :
OS reports request to set locale to "Japanese_Japan.65001" cannot be honored
目前,Windows 是否允許 R 使用 UTF-8?
(由於我對locale問題不是很熟悉,如果有更多信息歡迎評論。)
信息
> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"
似乎 R 已經在 Windows 10 上構建了完全支持 UTF-8 的實驗性二進制文件,但由於該項目被標記為“實驗性”,並且截至 202 年 2 月 3 日官方結論是:
同樣基於此經驗,我相信切換到 UCRT 已經成為可能,我預計構建完整的工具鏈應該需要幾個月的時間。 這是我認為在 Windows 上的 R 中可靠地支持 Unicode 字符(無法以本機編碼表示)的唯一現實方法。
這顯然意味着在 Windows 上的 R 中對 UTF-8 的全面支持仍然是一個更遙遠的未來的計划。
Sys.setlocale(locale = foo)
默認為category = "LC_ALL"
; 可以單獨為 R 進程設置語言環境的各個方面,例如如下:
locales <- c("LC_COLLATE","LC_CTYPE","LC_MONETARY","LC_NUMERIC","LC_TIME");
for (x in locales) { Sys.setlocale(category = x, locale="Japanese_Japan.65001")}
請注意上述代碼片段中的所有警告以及語言環境的進一步說明:Query or Set Aspects of the Locale文章:
Sys.setlocale("LC_CTYPE", )
,如果這意味着不同的字符集)可能不起作用,並且可能會導致一些混亂。"LC_NUMERIC"
設置為"C"
以外的任何值可能會導致 R 到 function 異常,因此會發出警告。"LC_NUMERIC"
的設置,因為它們使用了未國際化的 Trio 庫。例如,我的語言環境是捷克語,所以我嘗試了以下代碼片段(在循環上方逐項列出以按順序查看結果和警告):
Sys.getlocale(category = "LC_ALL")
Sys.setlocale(category = "LC_COLLATE" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_CTYPE" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_MONETARY", locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_NUMERIC" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_TIME" , locale="Czech_Czechia.65001")
Sys.getlocale(category = "LC_ALL")
Output (粘貼到 RStudio 控制台中):
> Sys.getlocale()
[1] "LC_COLLATE=Czech_Czechia.1250;LC_CTYPE=Czech_Czechia.1250;LC_MONETARY=Czech_Czechia.1250;LC_NUMERIC=C;LC_TIME=Czech_Czechia.1250"
> Sys.setlocale(category = "LC_COLLATE" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.setlocale(category = "LC_CTYPE" , locale="Czech_Czechia.65001")
[1] ""
Warning message:
In Sys.setlocale(category = "LC_CTYPE", locale = "Czech_Czechia.65001") :
OS reports request to set locale to "Czech_Czechia.65001" cannot be honored
> Sys.setlocale(category = "LC_MONETARY", locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.setlocale(category = "LC_NUMERIC" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
Warning message:
In Sys.setlocale(category = "LC_NUMERIC", locale = "Czech_Czechia.65001") :
setting 'LC_NUMERIC' may cause R to function strangely
> Sys.setlocale(category = "LC_TIME" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.getlocale(category = "LC_ALL")
[1] "LC_COLLATE=Czech_Czechia.65001;LC_CTYPE=Czech_Czechia.1250;LC_MONETARY=Czech_Czechia.65001;LC_NUMERIC=Czech_Czechia.65001;LC_TIME=Czech_Czechia.65001"
>
The best way to use R in Windows to this day (August 22nd, 2020) is to install WSL 2 (Windows Subsystem for Linux) and connect to RStudio Server via a web browser.
指示:
sudo rstudio-server start
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.