6 に答える
こうすれば
DefaultHttpClient httpclient= new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.xxxxxxxx.com/thescript.php");
Log.e("done 1st","its here");
try
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("name", Name.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("sex", Sex.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("nationality", Nationality.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); //UPDATE HERE
HttpResponse response = httpclient.execute(httppost);
Log.e("done", String.valueOf(response));
}
Unicode 文字を受け入れないため、型は varchar であってはなりません。nvarchar に更新してください。
アンドリーズが言ったように、照合は utf8_general_ci または他の Unicode 照合にも設定する必要があります。
編集:
したがって、MySQL v5.x を使用しているため、構成ファイル (my.cnf など) が必要です。スーパーユーザーを使用してデータベースにアクセスしていないことを確認する必要があります。これを構成ファイルに追加します。
[mysqld]
init_connect='SET collation_connection = utf8_general_ci; SET NAMES utf8;'
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
これにより、すべての接続で utf8_general_ci を使用するようにトリガーされます。
MySQL を再起動し、mysqld.log がエラーを返さない場合は、再起動する必要があります。
テーブル照合を utf8_general_ci またはその他の Unicode 照合に変更する必要があります。Latin1 はアラビア文字を表すことができません。
私はこの問題を1週間にわたって抱えていて、検索して検索しました.@birajがこの問題を解決する唯一の方法で提案した解決策です! データベースを変更したり、php または .... で UTF-8 を設定したりする必要はありません。
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
そして、この問題は永久になくなりました。
正しい (UTF-8) Charset を UrlEncodedFormEntity コンストラクターに渡す必要があります。