gpt4 book ai didi

r - 在 UTF-8 域中使用 urltools::url_parse

转载 作者:行者123 更新时间:2023-12-04 08:20:11 24 4
gpt4 key购买 nike

函数url_parse速度非常快,大部分时间都可以正常工作。但最近,域名可能包含 UTF-8 字符,例如

url <- "www.cordes-tiefkühlprodukte.de"

现在如果我申请 url_parse在这个 url 上,我在域列中得到一个特殊字符“< fc >”:
url_parse(url)
scheme domain port path parameter fragment
1 <NA> www.cordes-tiefk<fc>hlprodukte.de <NA> <NA> <NA> <NA>

我的问题是:如何将此条目“修复”为 UTF-8?我试过 iconv以及来自 stringi 的一些功能包,但没有成功。

(我知道 httr::parse_url ,它没有这个问题。所以一种方法是检测不是 ascii 的 url,并在那些和 url_parse 上使用 parse_url 在少数特殊情况下。然而,这导致问题(有效地)检测非 ascii URL。)

编辑:不幸的是, url1 <- URLencode(enc2utf8(url))没有帮助。当我做
robotstxt::paths_allowed(
url1,
domain=urltools::suffix_extract(urltools::domain(url1))
)

我收到一个错误 could not resolve host .但是,手动插入原始URL和二级域, paths_allowed作品。
> sessionInfo()

R 版本 3.6.1 (2019-07-05)
平台:x86_64-w64-mingw32/x64(64位)
运行于:Windows 10 x64(内部版本 17134)

矩阵产品:默认

语言环境:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252

附带的基础包:
[1] stats graphics grDevices utils datasets 方法基础

其他附加包:
[1] urltools_1.7.3 财富_1.5-4

通过命名空间加载(而不是附加):
[1] compiler_3.6.1 Rcpp_1.0.1 triebeard_0.3.0

最佳答案

我可以重现这个问题。我可以转换列 domain通过使用 readr::parse_character 读取到 UT​​F-8和 latin1编码:

library(urltools)
library(tidyverse)

url <- "www.cordes-tiefkühlprodukte.de"

parts <-
url_parse(url) %>%
mutate(domain = parse_character(domain, locale = locale(encoding = "latin1")))

parts

scheme domain port path parameter fragment
1 <NA> www.cordes-tiefkühlprodukte.de <NA> <NA> <NA> <NA>

我猜您必须指定的编码(此处为 latin1 )仅取决于您的语言环境,而不取决于 url 的特殊字符,但我不是 100% 确定这一点。

关于r - 在 UTF-8 域中使用 urltools::url_parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57060536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com