我有一個文本文件,其中包含某種Unicode字符(尖括號中的Unicode代碼點)的回退轉換。所以它包含例如foo<U+017E>bar
這應該是「foošbar」。 R是否有一種簡單的方式將整個文件轉換爲UTF8並轉換這些字符?不幸的是,我在Windows上無法找到支持的UTF-8語言環境。將utf8代碼點字符串轉換爲utf8 <U+0161>轉換爲utf8
0
A
回答
2
也許:
library(stringi)
library(magrittr)
"foo<U+0161>bar and cra<U+017E>y" %>%
stri_replace_all_regex("<U\\+([[:alnum:]]+)>", "\\\\u$1") %>%
stri_unescape_unicode() %>%
stri_enc_toutf8()
## [1] "foošbar and cražy"
可能工作(我不需要在MacOS上一次的轉換,但你可以在Windows上)。
+0
不需要轉換,Windows本身使用Unicode。另一方面,R包會混淆Unicode和ANSI代碼。更糟的是,許多R軟件包不能識別編碼,而是嘗試從系統的語言環境或語言中猜測。當嘗試讀取多個Unicode編碼,甚至多個日期和數字格式時,這很重要 –
0
當代碼點正好用四位數表示時,上一個答案應該可以工作。這是一個修改後的版本,應該適用於1到8之間的任意數字。
library(stringi)
library(magrittr)
"foo<U+0161>bar and cra<U+017E>y, Phoenician letter alf <U+10900>" %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{4})>", "\\\\u$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{5})>", "\\\\U000$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{6})>", "\\\\U00$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{7})>", "\\\\U0$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{8})>", "\\\\U$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{1})>", "\\\\u000$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{2})>", "\\\\u00$1") %>%
stri_replace_all_regex("<U\\+([[:alnum:]]{3})>", "\\\\u0$1") %>%
stri_unescape_unicode() %>%
stri_enc_toutf8()
## [1] "foošbar and cražy, Phoenician letter alf "
相關問題
- 1. 將字節[]轉換爲UTF8字符串
- 2. 將字符串轉換爲utf8字節
- 3. 如何將字符串轉換爲UTF8?
- 4. 將unicode字符串轉換爲utf8
- 5. 將latin1字符串轉換爲utf8?
- 6. 將字符串轉換爲UTF8與perl
- 7. 將字符串轉換爲UTF8
- 8. 轉換爲UTF8格式的字符串
- 9. Unicode轉換爲UTF8字符串
- 10. 轉換JSON字符串UTF8爲NSDictionary Swift
- 11. 如何將UTF8字符串轉換爲PHP中的代碼頁?
- 12. 將utf8mb4字符轉換爲utf8在php
- 13. 將Unicode轉換爲UTF8
- 14. Python將latin1轉換爲UTF8
- 15. 將UTF8轉換爲ANSI?
- 16. 將utf8轉換爲1251
- 17. 將UTF8轉換爲Windows-1252
- 18. 將Utf8轉換爲Unicode
- 19. 將latin1轉換爲UTF8
- 20. 將字節轉換爲UTF8編碼的字符串安全嗎?
- 21. 如何將utf8字符串轉換爲ascii字符串?
- 22. 轉換UINT8到字符UTF8
- 23. C#:將byte []轉換爲UTF8編碼的字符串
- 24. 將ASCII編碼的字符串轉換爲UTF8?
- 25. 如何將類似utf8的字符串轉換爲真正的utf8?
- 26. UTF8轉換
- 27. 轉換KOI8-R爲utf8
- 28. 轉換數據庫爲utf8
- 29. 轉換輸出爲utf8
- 30. 將ISO8859字符串轉換爲UTF8? ÄÜÜ=>Ã爲什麼?
UTF8是一種編碼,* NOT *是語言環境。無論如何,Windows自2000年起至少使用Unicode。 R包雖然混合了Unicode和ANSI代碼,然後依靠更改本地化設置來處理什麼是編碼問題。你真的嘗試了什麼?不同的軟件包有不同的怪癖。他們中有些人不幸混淆了語言和編碼 –
什麼是*文件的*編碼和內容?它是否使用Unicode編碼之一?然後它可以包含'foošbar'而不存在任何轉換問題。你確定問題不是RStudio或RRO的顯示字體嗎? –
我的問題是我無法在Windows上切換到UTF-8友好區域;像'Sys.setlocale(「LC_ALL」,'en_US.UTF-8')'不工作,不知道爲什麼。所以我有這個問題無論編碼文件是。 – user43018