ruby处理中文URL的办法

有些工具,比如浏览器在保存html页面的时候会把其中的中文路径名转化为$#12345的这种形式,这实际上是中文字符的编码点(codepoint),一般浏览器都能够自动的处理进行转化,不看Html代码,你根本不知道存在这种转化。
但我目前有个需求,需要进行html的解析,并且要和本地目录进行比较,因此就需要在ruby中把这种使用编码点的url字符串转化为字符。
比如下面这个url

src="./冰酷一夏.files/gif-0268.gif"

一开始,考虑用unpack来做

str = path.gsub(/&#(\d+);/) { |s| [$1.to_i(16)].pack("U") }
puts str

控制台的编码方式是gbk,这时输出是乱码,尝试进行转码

path = "./冰酷一夏.files/gif-0268.gif"
str = path.gsub(/&#(\d+);/) { |s| [$1.to_i(16)].pack("U") }
puts str
require "iconv"
puts Iconv.conv("gbk", "utf-8", str)

没想到输出是一样的

./馉鸱埞饳エ稷灆.files/gif-0268.gif
./馉鸱埞饳エ稷灆.files/gif-0268.gif

忽然想到java里面的做法

//str是通过正则表达式取出的数字,这样做是可以的
(char)Integer.valueof(str).intValue()

但是ruby并不支持unicode的编码点,因此ruby中int类型的to_char方法最大到256,这样也行不通。
于是想到用jruby来绕过这个转换的过程

i = Ja::Integer.new(number)
c = Ja::Character.new(i.intValue())
Ja::String.valueOf(c)

这个代码是可以运行的了。

又过了好几天,忽然又想到问题可能是处在对编码点的理解上,一开始用的是16进制,应该使用十进制的,于是又试了一下,问题解决了

str = path.gsub(/&#(\d+);/) { |s| [$1.to_i(10)].pack("U") }
puts str
require "iconv"
puts Iconv.conv("gbk", "utf-8", str)

其实,一开始就应该想到这个url是用十进制表示的编码点的,惯性思维,一看到编码点就直接用16进制了,这是个教训,呵呵。

今天把这点经验放上来,希望能帮到同样也在做这个事情的朋友。
<think>好的,我现在需要帮用户解决在Mac上安装Homebrew的问题。首先,我得回想一下自己之前安装Homebrew的经历,或者看看有没有相关的资料。用户提到了几个引用,其中引用1、3、4都涉及到Homebrew的安装方法,可能里面有有用的信息。 根据引用1,用户提到安装Homebrew的步骤是先安装Homebrew,然后用brew安装其他软件。引用3和4则提到了安装过程中可能遇到的问题,比如需要切换镜像源,或者处理旧版本的问题。用户的问题是如何在Mac上安装Homebrew,所以需要给出一个清晰的步骤指南。 首先,我应该检查系统要求。Homebrew通常需要macOS 10.13或更高版本,对于旧版本可能需要特殊处理,比如引用4提到的镜像源切换。然后,安装命令通常是通过curl执行官方脚本,但国内用户可能遇到下载慢的问题,这时候需要替换镜像源,比如中科大的源或者清华的源。 接下来,步骤应该分几个部分:安装前的准备、安装命令、换源加速(可选)、验证安装。可能还需要包括常见问题的解决方法,比如权限问题,或者安装失败时的处理办法,比如引用3提到的重新克隆homebrew-core仓库。 要注意用户可能遇到的问题,比如网络问题导致下载失败,这时候换源就很重要。此外,安装完成后需要将Homebrew添加到PATH环境变量中,特别是M1/M2芯片的Mac,可能需要配置不同的路径。 然后,按照用户提供的系统级指令,回答需要使用中文,结构清晰,分步骤说明。同时,要生成相关问题,比如如何卸载Homebrew,或者安装特定软件包,以及换回官方源的方法。 最后,确保所有引用正确标注,比如引用1、3、4对应的解决方案。可能需要提醒用户如果遇到错误,可以参考特定引用中的方法处理,比如镜像源切换或者修复仓库。</think>### 如何在macOS上安装Homebrew包管理器 #### 1. 安装前准备 - **系统要求**: macOS 10.13 (High Sierra) 或更高版本。旧版本需通过特殊方法解决依赖问题[^4]。 - **安装命令行工具**: 打开终端,输入以下命令安装Xcode命令行工具: ```bash xcode-select --install ``` #### 2. 执行官方安装脚本 ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 此脚本会自动完成安装。若网络不稳定,可尝试切换国内镜像源(见步骤3)。 #### 3. (可选)换源加速 国内用户可通过以下命令使用中科大镜像加速: ```bash # 替换Homebrew核心仓库 git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git # 替换Homebrew Core git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git # 更新配置 brew update ``` #### 4. 配置环境变量(M1/M2芯片需执行) 在终端配置文件中(如`~/.zshrc`)添加: ```bash echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` #### 5. 验证安装 输入命令检查版本: ```bash brew --version ``` 若显示类似`Homebrew 4.x.x`则安装成功。 #### 常见问题解决 - **安装中断**: 若因网络问题失败,清理残留后重试: ```bash sudo rm -rf /usr/local/Homebrew ``` - **旧版本Ruby报错**: 参考镜像源切换方法。 - **仓库损坏**: 按引用[3]方法重新克隆仓库: ```bash cd /usr/local/Homebrew/Library/Taps/homebrew rm -rf homebrew-core git clone https://github.com/Homebrew/homebrew-core --depth=1 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值