質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2863閲覧

cisco APIを使いwebex teamsのチャットにRubyで文字を出力するようにしたが日本語が文字化けしてしまう

kozica

総合スコア58

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/07/10 08:30

編集2018/07/11 00:14

前提・実現したいこと

cisco APIを使いwebex teamsのチャットに文字を出力するようにしました。
しかし、英語はいいものの日本語は文字化けしてしまいます。

下記のコードをどこかに入れればいいと思うのですが、どうすればいいかわかりません。
'Content-Type': 'application/json; charset=utf8'

お力を貸して頂きたいです。

該当のソースコード

ruby

1require 'cisco_spark' 2require 'net/https' 3require 'json' 4require 'uri' 5require 'content_type' 6 7CiscoSpark.configure do |config| 8 config.api_key = '#access_token' 9 end 10 11 message = CiscoSpark::Message.new(text: 'こんにちは') 12 room = CiscoSpark::Room.new(id:'#roomID') 13 room.send_message(message)

試したこと

header = {'Content-Type': 'application/json; charset=utf8'}
上記を色々試してみた

###エラー内容
'こんにちは'と文字を打つと下記のようになりました。
イメージ説明

補足情報(FW/ツールのバージョンなど)

OS:ubuntu18.04
ruby:2.5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazto

2018/07/10 22:31

どのように文字化けするか、スクショを添付することは可能でしょうか。
kozica

2018/07/11 00:15

投稿を編集して文字化け画像を添付致しました。よろしくお願い致します。
kozica

2018/07/11 00:16

また、別の書き方のほうがよければ大幅に改善しても大丈夫です。
kozica

2018/07/11 01:35

これはつまりrequireでCiscospark-rubyに変更すればよいということでしょうか? 初心者ですいません
asm

2018/07/11 01:52

そんな事は言っていません。 「gem which cisco_spark/api」 コマンドで当該ファイルのパスが表示されるので比較してみてはどうでしょうか
kozica

2018/07/11 02:09

見たところ、asmさんが仰ったcisco_spark-rubyのgithubと同じように書かれてました。ちゃんとutf-8と記述されているのに文字化けしてしまうのはなぜでしょうか、、、
kozica

2018/07/11 02:10

あ、requestメソッドを使ってないからですかね!
guest

回答1

0

ベストアンサー

とりあえず、utf-8がついてるのかを確認しましょう。

ruby

1class CiscoSpark::Api 2 def http_client 3 client = Net::HTTP.new(request_uri.host, request_uri.port) 4 client.use_ssl = (request_uri.scheme == "https") 5 client.set_debug_output $stderr 6 client 7 end 8end

CiscoSpark.configure直前にでも追加して実行すると
標準エラー出力に通信内容が出力されるハズです


追記

ruby

1class CiscoSpark::Api 2 def do_post 3 post_request = request(Net::HTTP::Post) 4 # post_request.set_form_data(request_body) 5 post_request.body = request_body.to_json 6 debug(post_request) if CiscoSpark.debug 7 8 response = http_client.request(post_request) 9 debug(response) if CiscoSpark.debug 10 11 response 12 end 13 def do_put 14 post_request = request(Net::HTTP::Put) 15 # post_request.set_form_data(request_body) 16 post_request.body = request_body.to_json 17 debug(post_request) if CiscoSpark.debug 18 19 response = http_client.request(post_request) 20 debug(response) if CiscoSpark.debug 21 22 response 23 end 24end

で、多分直るはず
上のデバッグ出力のやつは消してもいいです

投稿2018/07/11 02:24

編集2018/07/31 09:41
asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozica

2018/07/31 06:54

返信が遅くなり申し訳ありません。上記で実行したところ下記内容が出力されました。 $ bundle exec rails s => Booting Puma => Rails 5.2.0 application starting in development => Run `rails server -h` for more startup options opening connection to api.ciscospark.com:443... opened starting SSL for api.ciscospark.com:443... SSL established <- "POST /v1/messages? HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Ruby\r\nHost: api.ciscospark.com\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: Bearer YzU1YjkyYTktZWNkMi0ZmYjUzNzJlZTNiYmMtYjVm\r\nConnection: close\r\nContent-Length: 134\r\n\r\n" <- "roomId=Y2lzY200vZTEzZjJjYTAtN2Y1ZC0xMWU4LTg1MzUtMGZiNTYwNGJhMmU0&text=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF" -> "HTTP/1.1 200 OK\r\n" -> "TrackingID: ROUTER_5B6006FA-F2D7-01BB-2287-D29298982287\r\n" -> "Content-Type: application/json;charset=UTF-8\r\n" -> "Content-Encoding: gzip\r\n" -> "Vary: Accept-Encoding\r\n" -> "Date: Tue, 31 Jul 2018 06:51:38 GMT\r\n" -> "Server: Redacted\r\n" -> "l5d-success-class: 1.0\r\n" -> "Via: 1.1 linkerd\r\n" -> "Transfer-Encoding: chunked\r\n" -> "Connection: close\r\n" -> "Strict-Transport-Security: max-age=63072000; includeSubDomains; preload\r\n" -> "\r\n" -> "a\r\n" reading 10 bytes... -> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00" read 10 bytes reading 2 bytes... -> "\r\n" read 2 bytes -> "129\r\n" reading 297 bytes... -> "|\x8E\xCBN\xC2@\x14\x86\xDF\xA5kif\xA6 \xC8J.mC\xD3\xD3\nL%3\xBB\t6\xF4BmSG.cX\xE0+\xF8\x04\xC6\xA5\v\xDF\xA1\xBE\x98\x03Qw\xBA\xF9\x92s\xF2\xE7\xCB\xF7d\xA4wF\xDF`d\xAD\x18\xB9RK\xD7\xD9\vUn|\xEBV\xF9\b;\x11\x0E\x863\x14m\xA0\x00+\xA46\x81\xF1@\x86t\xDA\xE6s\xB4\x83E\xD4\xF6i\xB2\xE6\x14$#<\xE7\x8B \x03:iC\xE1\xA5\xC6\x85Q\x97e1\xF9\xD3\x8D\xBD\e\x8A\xD0\x86S[\xF1\xCC\xCB\x18\x1D\xC8\x800\xCCG?\xDE\x15\x06\x15Ipy\x1AP\xB6\r\/\x81\"B\xDF^\xBA\xAFbm^\xD5\xE5c\xA5_2\xDEI}~\xBE5\xC7\xE6E\xF3\xF9\xCCc\xF3~\xE6\xEB\x99\x1FzW\xC5\xF5Cy\xFFO\xD4\xD0\xA1x\b\xB3y\x8F05A@\xD8.\x1C\xE1\x1C\x94S\xF8t\xBA\x85q$\x99\x8E`{\x84B\xD7\xC6|\xBC\xB2 \x9Bv\x82\xCC\xFE\x95\xDB\x85H\xD7\xDA\x9F\x9B\xB9\xD8\x8AD\xD4\xE2\xBA*\xABe\"\xA4\x99\x9DR\x97u,d|* \b\xF7Z\xA8\xDB\xB20E\x97\xFD\x0E\xEE[=\xB3K\x107\x0E_" read 297 bytes reading 2 bytes... -> "\r\n" read 2 bytes -> "d\r\n" reading 13 bytes... -> "\x01\x00\x00\xFF\xFF\xE9\x80\xBA\xBE\x94\x01\x00\x00" read 13 bytes reading 2 bytes... -> "\r\n" read 2 bytes -> "0\r\n" -> "\r\n" Conn close Puma starting in single mode... * Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop
kozica

2018/07/31 07:30

そうだったのですか どのように書き換えれば解決できますでしょうか?
kozica

2018/08/01 00:15

無事文字化けしなくなりました! どういう処理してるか調べてみます! ご丁寧にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問