设为首页 加入收藏

TOP

Ubuntu下MySQL5.7+PHP7.0+Okhttp3.7.0中文乱码问题的解决方案
2018-01-16 14:49:32 】 浏览:104
Tags:Ubuntu MySQL5.7 PHP7.0 Okhttp3.7.0 中文 乱码 问题 解决方案

在安卓手机app做登陆和注册功能时,如果传输中文,经常会遇到乱码的问题。这也是个很头疼的问题。首先,从前端将数据post出去,假设是用Okhttp进行,传至后端的php程序,然后连接上服务器中的mysql,判断后回传结果。整个流程中多处涉及数据的编码,如果有一处编码不一致,那数据就会出现乱码的问题。当然如果是纯英文,一般没有问题。

我最近正好自己做了这个功能,前端用的是Okhttp,后端用的是阿里云的Ubuntu下的php7.0+mysql5.7。

Okhttp部分:

OkHttpClient client=new OkHttpClient();  
FormBody body = new FormBody.Builder()  
          .add("键",值)  
          .build();  
  Request request = new Request.Builder()  
          .url("服务器php")  
          .post(body)  
          .build();  
  Response response=client.newCall(request).execute();  
  String responseData=response.body().string();  

PHP部分:

<?php  
header("Content-type:text/html;charset=utf-8");//必须设置为utf-8  
  
include 'conn.php';//与mysql连接的文件,在下面  
...//sql判断  
echo $result;//返回结果  
?>  
<?php//conn.php  
$server="";  
$username="";  
$password="";  
$dbname="";  
$con=mysqli_connect($server,$username,$password,$dbname);  
if(!$con)  
{  
die("Fail" . mysqli_error());  
}  
mysqli_query("set character set utf8");//关键  
mysqli_query("set names utf8");//关键  
?>  

linux中查看文件的编码方式可以通过在vi中命令模式下输入:set fileencoding来查看,如果不是,可以通过conv命令实现,自行百度。

MySQL部分:

主要问题就是如何设置MySQL的database,server的编码方式是否是utf-8。

第一步:输入mysql -u root -p,输入密码进入mysql。

第二步:show variables like 'character%';结果如图(以下截图是我已经设置好之后的,默认database和server应该是latin1)

\

第三步:接下来修改mysql.conf.d/mysqld.cnf和conf.d/mysql.cnf

最后就不会出现乱码了!

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQL Server Management Studio连.. 下一篇windows系统下怎么用cmd进入mysql..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目