HTTP Post通信での文字化け

5,864 views
Skip to first unread message

zen

unread,
Feb 11, 2011, 2:19:10 AM2/11/11
to 日本Androidの䌚
初めたしお。zenず申したす。

行き詰たっおいたすので質問させお頂きたす。
珟圚Android > PHP > MySQLずいう流れでPostしおデヌタ怜玢・䜜成するアプリを補䜜しおいたす。
事前にMySQLに䜜成したデヌタは問題なく取埗できたのですが、
Androidから送信したマルチバむト文字のみが文字化けしおデヌタベヌスに栌玍されおしたいたす。

どうも原因はAndroid(java) > PHPの間にあるず思い、
䞋蚘URLを参考にしたしたが、どうも修正方法がわかりたせん。

https://groups.google.com/group/android-group-japan/browse_thread/thread/ed1fa5993ddcaf06?hl=ja

ご教授頂けるず幞いです。

以䞋Android偎コヌド------------------------------------------------------

public class Phppost{
private static final String url = "http://www.hoge.net/post.php";

public String create(int type, String description, String password,
int latitude, int longitude,int rank){
String retText = null;

//-----[クラむアント蚭定]
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

//-----[POST送信するデヌタを栌玍]
List<NameValuePair> nameValuePair = new
ArrayList<NameValuePair>(1);
nameValuePair.add(new BasicNameValuePair("type",
String.valueOf(type))); //怜玢or䜜成
nameValuePair.add(new BasicNameValuePair("description",
description)); //説明
nameValuePair.add(new BasicNameValuePair("password",
password)); //パスワヌド
nameValuePair.add(new BasicNameValuePair("latitude",
String.valueOf(latitude))); //緯床
nameValuePair.add(new BasicNameValuePair("longitude",
String.valueOf(longitude))); //経床
nameValuePair.add(new BasicNameValuePair("rank",
String.valueOf(rank))); //評䟡

try{
//-----[POST送信]
httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
HttpResponse response = httpclient.execute(httppost);
ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
response.getEntity().writeTo(byteArrayOutputStream);

//-----[サヌバヌからの応答を取埗]
if(response.getStatusLine().getStatusCode() ==
HttpStatus.SC_OK){
String oriText = byteArrayOutputStream.toString();

//広告の排陀凊理
//"[[["から"]]]"たでの文字列を取り出す
retText = new String(oriText.substring(oriText.indexOf("[[[")
+3, oriText.indexOf("]]]")));
}
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return retText;
}

䜐竹雅倮

unread,
Feb 13, 2011, 10:54:12 AM2/13/11
to android-g...@googlegroups.com
zenさん、こんばんは。

> httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));

UrlEncodedFormEntityのコンストラクタに、第二匕数ずしおサヌバ偎が期埅する文字コヌドを指定しおみおください。
期埅する文字コヌドが䜕なのかは私には分かりたせんが、既存のWebサむトのフォヌムをAndroidからPostしおいるのであれば、
元のWebサむトのフォヌムのあるペヌゞの文字コヌドにすればいいです。
Responseの凊理で文字コヌドの指定なくByteArrayからtoStringしお文字化けおいないのなら、UTF-8かな、ずも思いたすが。

参考UrlEncodedFormEntityのJavadoc
http://developer.android.com/intl/ja/reference/org/apache/http/client/entity/UrlEncodedFormEntity.html


ずころで、党然関係ないですが、ArrayListのコンストラクタに1を䞎えおたすが、
芁玠を6個addするこずが分かっおいるなら6を䞎えたほうが良いですよ。
キャパ1で䜜っおも䜕床も拡匵する手間が発生するだけなので。

䜐竹

2011幎2月11日16:19 zen <innovatio...@gmail.com>:

> --
> このメヌルは Google グルヌプのグルヌプ「日本Androidの䌚」の登録者に送られおいたす。
> このグルヌプに投皿するには、android-g...@googlegroups.com にメヌルを送信しおください。
> このグルヌプから退䌚するには、android-group-j...@googlegroups.com にメヌルを送信しおください。
> 詳现に぀いおは、http://groups.google.com/group/android-group-japan?hl=ja からこのグルヌプにアクセスしおください。
>
>

zen

unread,
Feb 13, 2011, 12:05:34 PM2/13/11
to 日本Androidの䌚
䜐竹さん、回答を頂きありがずうございたす。

アドバむス頂いた通りに文字コヌドを指定したずころ、無事文字化けせずに取埗するこずができたした。

たた、リストのコンストラクタがなのは怜玢結果のコピペだったからです・・・。
リストだったので゚ラヌも出ずに動いおいたしたが、気を付けないずいけたせんね。参考になりたした。

珟圚孊生なのですが、ネットワヌクを利甚した開発は初めおだったもので、
䜕から調べおいいのか分からない状態でした・・・。
本圓に助かりたした。ありがずうございたした。

On 2月14日, 午前12:54, 䜐竹雅倮 <madg...@gmail.com> wrote:
> zenさん、こんばんは。
>
> > httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
>
> UrlEncodedFormEntityのコンストラクタに、第二匕数ずしおサヌバ偎が期埅する文字コヌドを指定しおみおください。
> 期埅する文字コヌドが䜕なのかは私には分かりたせんが、既存のWebサむトのフォヌムをAndroidからPostしおいるのであれば、
> 元のWebサむトのフォヌムのあるペヌゞの文字コヌドにすればいいです。
> Responseの凊理で文字コヌドの指定なくByteArrayからtoStringしお文字化けおいないのなら、UTF-8かな、ずも思いたすが。
>
> 参考UrlEncodedFormEntityのJavadochttp://developer.android.com/intl/ja/reference/org/apache/http/client...
>
> ずころで、党然関係ないですが、ArrayListのコンストラクタに1を䞎えおたすが、
> 芁玠を6個addするこずが分かっおいるなら6を䞎えたほうが良いですよ。
> キャパ1で䜜っおも䜕床も拡匵する手間が発生するだけなので。
>
> 䜐竹
>
> 2011幎2月11日16:19 zen <innovationlife....@gmail.com>:
>
> > 初めたしお。zenず申したす。
>
> > 行き詰たっおいたすので質問させお頂きたす。
> > 珟圚Android > PHP > MySQLずいう流れでPostしおデヌタ怜玢・䜜成するアプリを補䜜しおいたす。
> > 事前にMySQLに䜜成したデヌタは問題なく取埗できたのですが、
> > Androidから送信したマルチバむト文字のみが文字化けしおデヌタベヌスに栌玍されおしたいたす。
>
> > どうも原因はAndroid(java) > PHPの間にあるず思い、
> > 䞋蚘URLを参考にしたしたが、どうも修正方法がわかりたせん。
>
> >https://groups.google.com/group/android-group-japan/browse_thread/thr...
Reply all
Reply to author
Forward
0 new messages