こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Android端末 文字付きURL サバ側で文字化

Android端末 文字付きURL サーバー側で文字化け

こんにちは。
昨日も単純な宣言ミスで質問しましたが、初心者にとってはその単純な事が山脈の様にあるように感じています。
文字化けは付き物と思って作業してましたが、調べても数が多すぎて探し切れず質問します。

Androidアプリでサーバーに文字列を送信して検索結果を取得しようと思っています。
コード(int型)でデータ取得成功しているので、コードを名前(全角のはいるstring型)で取得しようと思ったら、文字化けが発生してました。



----------------------------------------------------------------------------------------------
String str1 = editText1.getText().toString();【ここで端末から入力された文字をゲットしてます 漢字です】
$inpurl = "htt://www.hoge.com/moge.html?s_name=" + str1;
(中身 例 htt://www.hoge.com/moge.html?s_name=佐藤)
getData(inpurl);

中略

private void getData(String getUrl) {
try {
URL url = new URL( getUrl );
Object content = url.getContent();
if( content instanceof InputStream ) {
BufferedReader reader
= new BufferedReader(
new InputStreamReader((InputStream)content, "UTF-8"));
String line;
int sw1 = 0;
while( ( line = reader.readLine() ) != null ) {
switch(sw1){
case 0:
kensu[sw1] = line;
String str = line.replaceAll(" " , "");
String[] strAry = str.split(",");
name = strAry[0];
以下省略
----------------------------------------------------------------------------------------------
端末内部では文字化けしていませんが、サーバー側で送られたデータを見ると日本語が文字化けしてます。
別な検索でコード(int型)は取得成功しているので、文字化けさえ解決出来れば問題無いのではと検索しましたが、量が多すぎて目的に達する事が出来ませんでしたので、質問します。

【開発環境】
Eclipse

【言語設定】
全てUTF-8にしてあります。
(半角文字列付きでは情報取得には成功しております。サーバー → 端末 全角は取得出来ています。)

【やった事】
文字化け、アンドロイド、JAVA等でググりましたがあまりにも多すぎて目的の情報に達する事が出来ませんでした。
(専門用語がわからないので、適切な検索とはいえませんが・・・・泣)

【質問・やりたい事】
アプリでAndroid端末から全角文字付きURLを送信させたい。
例)
htt://www.hoge.com/moge.html?s_name=佐藤

半角文字列は成功しています。
成功例
htt://www.hoge.com/moge.html?s_id=hoge

以上。
初心者レベル過ぎて本当に失礼と思いますが、是非アドバイスと回答よろしくお願いたします。

投稿日時 - 2011-04-14 13:27:16

QNo.6667588

すぐに回答ほしいです

質問者が選んだベストアンサー

>アプリでAndroid端末から全角文字付きURLを送信させたい。

無理です。URLの文字列は、全角文字は使えません。半角英数字の組み合わせで表現することを前提に設計されています。考え方が逆です。つまり全角文字を使えるようにするのでなく、全角文字を半角英数字に変換するのです。これはURLエンコード・デコードという機能を使います。これらはjava.netパッケージに「URLEncoder」「URLDecoder」というクラスとして用意されています。

まず、送信する際には、送信するテキストをURLエンコードでエンコードします。

String 変数 = URLEncoder.encode(送りたいテキスト , "UTF-8");

これで、エンコードしたテキストが得られるので、これをURLにつけて送信します。これを受け取る側では、受け取ったパラメータの値をデコードします。

String 変数 = URLDecoder.decode(str , "UTF-8");

これでデコードして元のテキストが得られます。それぞれ第2引数のエンコード名は適当に変更するなりしてください。


P.S.
AndroidでいきなりJavaを覚えるとなるとかなり大変ですので、遠回りのようですが、ちゃんとしたJavaの入門書などでひと通り勉強してからAndroid開発に入ったほうが、逆に近道のように思いますよ。

投稿日時 - 2011-04-14 15:12:09

お礼

いつもありがとうございます。
またアドバイスありがとうございます。
自己解決したのに消せなかったので、そのままにしてました。

writer = new PrintWriter(uc.getOutputStream());
writer.print("s_name=佐藤");

その直下で
reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
while( ( line = reader.readLine() ) != null ) {

で、思い通りになりました。

good-failureさんの方法もやってみます。
postと言うのですね。←でもきっと忘れます いつもやってるのに質問の時出てきませんでしたから。。
私の質問がいつも専門用語知らないので適当過ぎるので、good-failureさんの回答が私のやりたい事をそのまま説明してくれるので感謝しております。
『POSTする方法教えてください』と聞けないレベルです 泣 ごめんなさい。


psの件
やっぱりそうですよねぇ 泣
と言っても問題は、下手にプログラムを知っているので、どこが入門でどこから学べばいいのわからないのです 泣
PHPやMysqlもそうですが、高度な事をやりたいわけじゃないので、深く入らないで動いてる範囲で作ってる感じです。
プログラムで収入得ているわけじゃないので、目的があると覚えやすいかなと思ってアンドロイドでやってます。
また、しょうもない質問すると思いますが見捨てずに、時間ある時に回答してください。
いつも本当に感謝しております ありがとうございました。

投稿日時 - 2011-04-14 15:47:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-