|
|
导航: |
论坛 -> 发布代码
斑竹:liumazi,ruralboy |
|
作者: |
msfm (清洁工) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2016/2/20 22:24:42 |
标题: |
折腾了好久最近终于折腾成功了erlang+delphi+android+mysql插入中文 |
浏览:2706 |
|
加入我的收藏 |
楼主: |
开始各种混乱 问人家都说 可以存中文 自己就是不成功, 好久终于妥协方案成功了 ,心里总别扭 这次又折腾,呀真成功了,一个人折腾这3种语言 真高血压 不过也挺高兴,梦想照进现实又近了一步 。 使用 werl mysql 数据库 utf8 序列 utf8_general_ci
procedure TForm1.Button1Click(Sender: TObject); var sm:TStringStream; begin sm:=TStringStream.Create('',TEncoding.UTF8); sm.WriteString('aaaaa中文'); IdTCPClient1.Host:='127.0.0.1'; IdTCPClient1.Port:=5002; IdTCPClient1.Connect; sm.Position:=0; IdTCPClient1.IOHandler.Write(sm); IdTCPClient1.Disconnect; end;
-module(bb). -export([start/0,close/1]). -define(PORT,5002). start() ->
AA= <<"我是汉字">>,
io:format("hello erlang ~w~n",[[AA,byte_size(AA)]]),
case gen_tcp:listen( ?PORT,[binary,{active,true},{packet,0}])
of
{ok,LSocket}->
io:format("listen port success ~w~n",[LSocket]),
spawn(fun() -> loop(LSocket) end) ,
{ok,LSocket}
;
{error,Reason}->
io:format("listen port error Reason: ~w~n",[Reason]),
{error,{cannot_listen,Reason}}
end .
%% server socket begin listen
loop(LSocket)->
io:format("begin listen lsocket: ~n",[]),
case gen_tcp:accept(LSocket)
of
{ok,Socket}->
io:format("receive client connect: ~p~n",[Socket]),
begin_receive(Socket),
spawn(fun()-> loop(LSocket) end)
;
{error,Reason}->
io:format("accept client error: ~w~n",[Reason])
end.
begin_receive(Socket)->
io:format("begin listen socket client data: ~n",[]),
receive
{tcp,Socket,Data}-> %%io:format("::::::::::~p~n",Data),
NewData= <<Data/binary>>, mysql:start_link(conn, "127.0.0.1", 3306, "root", "htrd@123456", "test", undefined, utf8), Sql3=lists:concat(["insert into t (a,b) values ('",binary_to_list(NewData),"','",binary_to_list(NewData),"')"]), mysql:fetch(conn,Sql3),
io:format("receive client data1: ~p~n",[NewData]),
io:format("receive client data1: ~ts~n",[NewData]), io:format("receive client data1: ~w~n",[NewData]), %% gen_tcp:send(Socket,NewData) ,
begin_receive(Socket);
Data_2->
io:format("receive client data2: ~w~n",[Data_2])
end.
close(LSocket)->
gen_tcp:close(LSocket).
package test.myapplication;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button;
import org.json.JSONException; import org.json.JSONObject;
import java.io.BufferedWriter; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map;
public class MainActivity extends AppCompatActivity { String strJson = "26"; Thread thread; private Map<String, String> handlerMap = new HashMap<String, String>(); Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// thread = new ThreadLoadData(); // thread.start(); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { thread = new ThreadLoadData(); thread.start(); } }); }
// 点击搜索按钮后进入数据的加载 class ThreadLoadData extends Thread { // 一个线程变量只能用一次,所以要执行相同的动作时就必须定义一个Thread类而不是一个Thread变量 @Override public void run() { try { // 联网下载指定数量的数据 Socket socket = new Socket("192.168.1.103", 5002); // JSONObject json = new JSONObject(); Log.e("----------","debug"); // OutputStreamWriter osw = new OutputStreamWriter(socket // .getOutputStream());
String AA="我是中文"; byte[] byte_write=null;
byte_write=AA.getBytes("UTF-8"); //AA.getBytes("UTF-8"); OutputStream out_stream = null; InputStream in_stream = null;
out_stream = socket.getOutputStream(); in_stream = socket.getInputStream(); byte[] byte_read=new byte[1024]; int data_in_length=0; String read_in_str=null; out_stream.write(byte_write); System.out.println("socket write success");
data_in_length=in_stream.read(byte_read); read_in_str=new String(byte_read,0,data_in_length, "UTF8"); System.out.println("data_in_length:"+data_in_length+",read_in_str:"+read_in_str);
socket.close();
// // BufferedWriter writer = new BufferedWriter(osw); // System.out.println("true"); // JSONObject param = new JSONObject(); // param.put("age", strJson.replace("\n", " ")); // String ss="张三2"; //
// String temp1 =ss;// URLEncoder.encode(ss, "UTF-8"); //// temp1= new String(ss.getBytes("UTF-8"), "ansi"); // // // EncodingUtils.getString(ss,"GB2312");GBK // param.put("name", temp1); // // System.out.println("true--->" + param.toString()); // writer.write(param.toString()); // writer.flush(); } catch (Exception ex) { // this.destroy(); System.out.println("ERR-->" + ex.getMessage()); } } }
public JSONObject getJSON() throws JSONException { return new JSONObject(strJson); }
}
----------------------------------------------
- |
作者: |
akay (akay) |
★☆☆☆☆ |
-
|
普通会员 |
|
2016/2/20 22:52:13 |
1楼: |
有时间也研究下erlang,确实是好东西。
----------------------------------------------
-
|
作者: |
|
2016/2/22 10:59:22 |
2楼: |
恭喜恭喜。
《Delphi XE6 android 编程入门教程》最后少量,购完即止,欲购从速 详情:http://blog.163.com/you888@188/blog/static/67239619201491849577/ ---------- 《Delphi XE6 android 编程入门教程》现已正式出版 注:所有demo已经升级到d10up1(Delphi最新版本)了。 请放心购买。仅仅剩下几十本了,需要的收藏的请速度拍下。 地址:http://item.taobao.com/item.htm?id=38770574598 作者本人亲自销售 。请认准作者联系电话18509293820,QQ120180714,邮箱you888@188.com。 买到假的了,就没有以后的升级内容了。 ----------
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
|
|