gpt4 book ai didi

ruby - 从 sinatra 的帖子调用系统

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:59 25 4
gpt4 key购买 nike

我为树莓派制作了一个非常小的应用程序,它使用了 Sinatra:
https://github.com/khebbie/SpeakPi

该应用让用户在文本区域中输入一些文本,并要求 Google 为其创建一个 mp3 文件。

我有一个名为 speech2.sh 的 shell 脚本,它调用 Google 并播放 mp3 文件:

#!/bin/bash
say() {
wget -q -U Mozilla -O out.mp3 "http://translate.google.com/translate_tts?tl=da&q=$*";

local IFS=+;omxplayer out.mp3;
}
say $*

当我像这样从命令行调用 speech.sh 时:

./speech2.sh %C3%A6sel

%C3%A6 发音像丹麦字母“æ”,这是正确的!

我像这样从 Sinatra 路由调用 speech2.sh:

post '/say' do
message = params[:body]
system('/home/pi/speech2.sh '+ message)
haml :index
end

当我这样做时,Google 会发出一些非常奇怪的字符,例如“a broken pipe...”,这是错误的!

所有字符 a-z 的发音都正确

我尝试了一些 URL 编码和解码,但没有任何效果。

我尝试将消息输出到命令行,而正是 "%C3%A6" 肯定没有意义。你知道我做错了什么吗?

编辑

总结并简化 - 如果我在 bash 中这样输入:

./speech2.sh %C3%A6sel

有效

如果我启动一个 irb session 并输入:

system('/home/pi/speech2.sh', '%C3%A6sel')

这是行不通的!

最佳答案

由于它处理的是 UTF-8,因此通过在 Ruby 脚本顶部添加 # encoding: UTF-8 魔术注释并传递,确保编码在整个过程中保持正确调用 Google 翻译时查询字符串中的 ie=UTF-8 参数。

关于ruby - 从 sinatra 的帖子调用系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075862/

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