精华内容
下载资源
问答
  • <p>echoing results to page for both cases gives expected result, so its not a preg_repalce issue, must be db issue <p>I know this is not an <code>int</code> limit issue, I am using a <code>varchar(10...
  • PHP代码返回乱码

    2016-09-26 18:34:17
    $con=mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); if(!$con) echo Connection Error; else echo <h3>Connection Success</h3> ?> </code></pre> <p>In my browser when I ...
  • 今天做了一个excel文件导出功能 可是无论怎么改网上怎么搜答案什么缓冲啊charset=UTF-8'a都不起效 <?...use cmf\controller\AdminBaseController;use think\Db;use think\Loader;class DownController extend...

    今天做了一个excel文件导出的功能  可是无论怎么改网上怎么搜答案什么缓冲啊charset=UTF-8'a都不起效

    <?php
    namespace app\admin\controller;
    use cmf\controller\AdminBaseController;
    use think\Db;
    use think\Loader;
    class DownController extends AdminBaseController
    {


    /**
    * 将数据库数据导出为excel文件
    */
    function downLoadExcle($list)
    {
    // $user = Db::query("select * from user");
    Loader::import('PHPExcel.PHPExcel');
    Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory');
    Loader::import('PHPExcel.PHPExcel.Reader.Excel2007');
    $objPHPExcel = new \PHPExcel();
    $arr = json_decode(input('arr'));
    //设置每列的标题
    $objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', '序号')
    ->setCellValue('B1', '型号')
    ->setCellValue('C1', '外箱')
    ->setCellValue('D1', '中盒')
    ->setCellValue('E1', 'sn')
    ->setCellValue('F1', '追溯码')
    ->setCellValue('G1', '口味')
    ->setCellValue('H1', '套装')
    ->setCellValue('I1', '对应出库单号')
    ->setCellValue('J1', '出库时间')
    ->setCellValue('K1', '备注');
    //存取数据 这边是关键
    foreach ($list as $k => $v) {
    $num = $k + 2;
    $objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A' . $num, $v['id'])
    ->setCellValue('B' . $num, $v['name'])
    ->setCellValue('C' . $num, $v['p_bar_code'])
    ->setCellValue('D' . $num, $v['z_bar_code'])
    ->setCellValue('E' . $num, $v['u_bar_code'])
    ->setCellValue('F' . $num, $v['back'])
    ->setCellValue('G' . $num, $v['flavor'])
    ->setCellValue('H' . $num, $v['suit'])
    ->setCellValue('I' . $num, $v['order_code'])
    ->setCellValue('J' . $num, $v['create_time'])
    ->setCellValue('K' . $num, $v['content']);
    }
    ob_end_clean();
    $title = '我的文档';
    $objPHPExcel->getActiveSheet()->setTitle($title);
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
    $timestamp = time();
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header('Content-Disposition: attachment;filename="links_out'.$timestamp.'.xls"');
    header("Content-Transfer-Encoding:binary");
    // header('Content-Type: application/vnd.ms-excel;charset=UTF-8');
    // header('Content-Disposition: attachment;filename="订单汇总表(' . date('Ymd-His') . ').xlsx"');
    // header('Cache-Control: max-age=0');
    Loader::import('PHPExcel.PHPExcel.Reader.Excel5');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
    }

    /**
    * @param $filepathname
    * 将excel文件导入数据库
    * 使用iconv转换字符集防止文件名为中文时乱码
    */
    function uploadExcel($filepathname)
    {
    $file_path =$filepathname;
    $file_path = iconv('utf-8', 'gbk', $file_path);
    Loader::import('PHPExcel.PHPExcel.Reader.Excel2007');
    Loader::import('PHPExcel.PHPExcel.Reader.Excel5');
    $PHPReader = new \PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($file_path)) {
    $PHPReader = new \PHPExcel_Reader_Excel5();
    if (!$PHPReader->canRead($file_path)) {
    return;
    }
    }
    $objPHPExcel = $PHPReader->load($file_path, $encode = 'utf-8');
    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow();//获取总行数
    for ($i = 2; $i <= $highestRow; $i++) {
    $data['name'] = $objPHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();
    $data['p_bar_code'] = $objPHPExcel->getActiveSheet()->getCell("C" . $i)->getValue();
    $data['z_bar_code'] = $objPHPExcel->getActiveSheet()->getCell("D" . $i)->getValue();
    $data['u_bar_code'] = $objPHPExcel->getActiveSheet()->getCell("E" . $i)->getValue();
    $data['back'] = $objPHPExcel->getActiveSheet()->getCell("F" . $i)->getValue();
    $data['flavor'] = $objPHPExcel->getActiveSheet()->getCell("G" . $i)->getValue();
    $data['suit'] = $objPHPExcel->getActiveSheet()->getCell("H" . $i)->getValue();
    $data['order_code'] = $objPHPExcel->getActiveSheet()->getCell("I" . $i)->getValue();
    $data['create_time'] = $objPHPExcel->getActiveSheet()->getCell("J" . $i)->getValue();
    $data['content'] = $objPHPExcel->getActiveSheet()->getCell("K" . $i)->getValue();
    $allData[] = $data;
    if($data['name']==''){
    break;
    }
    }
    return $allData;

    }

    /**
    * 文件上传
    */
    function uploadFile($file)
    {
    // 获取表单上传文件 例如上传了001.jpg
    // $file = request()->file('avatar');
    // 移动到框架应用根目录/public/uploads/ 目录下
    $info = $file->validate(['ext'=>'xlsx,xls,cvs'])->move(ROOT_PATH . 'public' . DS . 'uploads');
    if ($info) {
    // echo $info->getPathname(); 获取文件路径
    //将文件写入数据库
    $send = $this->uploadExcel($info->getPathname());
    return $send;
    } else {
    // 上传失败获取错误信息
    echo $file->getError();
    }

    }
    }

     

    当代码没有错误的时候一定要看一下请求  如果你的请求是ajax  那么你的请求是要有返回值的 所以才会出现乱码

    将请求换成普通请求  就会正常下载文件了  绝对有效 摸着我自己的良心说

     

    转载于:https://www.cnblogs.com/phpclass/p/11264286.html

    展开全文
  • 最近用workman-JsonRpc来请求接口数据,发现有时候数据是显示正常的,过几天再打开页面,返回的数据又是乱码的,重启workman后又显示正常的。我的数据库是gbk编码的。 每个子进程开启的时候会执行onWorkerStart...

    最近用workman-JsonRpc来请求接口数据,发现有时候数据是显示正常的,过几天再打开页面,返回的数据又是乱码的,重启workman后又显示正常的。我的数据库是gbk编码的。

    每个子进程开启的时候会执行onWorkerStart方法,链接数据库,得到$mysql_db操作对象。通过“set Names latin1”设置数据库输出的编码格式。问题就出在这里,set Names  命令是临时生效的,重启mysql后会失效。Workman是常驻内存的,当数据库重启时,workman不会重新执行onWorkerStart方法,那set names 就没有再次执行了,所以数据库输出的编码格式就按照默认的格式输出。

     

    展开全文
  • (比如:当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。) 2. OleDb方式 微软 为“provider=...
    

    关于oracle字符集乱码问题:

    1.OracleClient方式 存在乱码问题。(比如:当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。)

    2. OleDb方式 微软 为“provider=MSDAORA.1;” 存在乱码问题。 (比如:服务器oracle为utf8,客户端为日文系统时,中文显示乱码)

    3.OleDb方式 Oracle为“provider='OraOleDb.Oracle';”。 不管Oracle服务器端用何字符集,读写中文均无乱码问题。


    关于要执行返回 REF CURSOR 的存储过程问题:

    1 OracleClient:

    必须在 OracleParameterCollection 中定义参数,包括 Cursor 的 OracleType 以及 Output 的 Direction。数据提供程序只支持作为输出参数绑定 REF CURSOR。提供程序不支持 REF CURSOR 作为输入参数。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Configuration;
    using System.Data;
    using System.Data.OracleClient;
    namespace pro
    {
        public partial class WebForm4 : System.Web.UI.Page
        {
            string OracleConnectionString = ConfigurationManager.ConnectionStrings["scott"].ConnectionString;
            protected void Page_Load(object sender, EventArgs e)
            {
                OracleConnection conn = new OracleConnection(OracleConnectionString);
                OracleCommand comm = new OracleCommand();
                comm.Connection = conn;
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "curspkg.open_one_cursor";
                comm.Parameters.Add(new OracleParameter("n_empno", OracleType.Number)).Value = "0";
                comm.Parameters.Add(new OracleParameter("io_cursor", OracleType.Cursor)).Direction = ParameterDirection.Output;
                conn.Open();
                OracleDataReader rdr = comm.ExecuteReader();
                    GridView1.DataSource = rdr;
                    GridView1.DataBind();         
                conn.Close();
            }
        }
    }

    2. OleDb方式 微软

      provider=MSDAORA提供程序不会自动绑定 REF CURSOR 数据类型

    create or replace package PKG_TEST_SYH is

      TYPE T_CURSOR IS REF CURSOR;

      procedure TEST001(io_cursor in out T_CURSOR);

    end PKG_TEST_SYH;


    create or replace package BODY PKG_TEST_SYH is

       procedure TEST001(O_NumRowUI out Number)
       is
       begin
            SELECT count(*) INTO O_NumRowUI
            FROM F101HEADER

       end TEST001;

    begin
      null;
    end PKG_TEST_SYH;


    .net中调用存储过程时,不必要设置cursor的类型和输出方式

    oleDbCommand.CommandText = procedureName;
       try
       {
        OleDbDataAdapter myAdapter = new OleDbDataAdapter();
        myAdapter.SelectCommand = oleDbCommand;
        myAdapter.Fill(ds,tbName);
       }
       catch(Exception ex)
       {
        Console.WriteLine(ex.Message);
       }


    3.OleDb方式 Oracle

    provider='OraOleDb.Oracle' 数据提供程序不会自动绑定 REF CURSOR 数据类型,oledb也没有提供对应(System.Data.OracleClient.OracleType.Cursor)的cursor类型。

    目前能想到的方法是:

    1) 建立临时表,将cursor数据集依次存储在临时表中,再从临时表中得到。


    2)

    Ø         Oracle数据库连接方式:

    Provider=OraOLEDB.Oracle.1;User ID=username;password=dbpassword;Data Source=databasename;Persist Security Info=True;Extended Properties='PLSQLRSet=1';

     

    Extended Properties='PLSQLRSet=1'

    注意:上面这个属性一定要带上,否则无法操作有返回游标参数的存储过程;



    参照:

    http://blog.csdn.net/cuizm/article/details/6528869


    http://blog.csdn.net/lizhenhuatop/article/details/2986303

    关于oracle字符集乱码问题:

    1 OracleClient方式,是微软专门针对Oracle数据库开发的,仅在 .NET Framework 1.1 版中受支持。当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。
    引用类库:System.Data.OracleClient.dll。 
    命名空间:System.Data.OracleClient。
    常用类:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等。
    典型连接字符串:“data source=oratest;user id=scott;password=tiger”(注意:可不指定 provider 驱动)。

    2. OleDb方式,微软和Oracle公司各自提供了OleDb的驱动程序,使用方法的差别很少。
    相同之处
    命名空间:System.Data.OleDb。
    常用类:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。
    不同之处
    引用类库:微软的只需要System.Data.dll;若用Oracle的驱动,虽然也只要引入System.Data.dll,但前提是首先安装
    Oracle针对.Net的数据访问组件
    连接字符串:与OracleClient方式相比,要添加一个provider,微软为“provider=MSDAORA.1;”,Oracle为“provider='OraOleDb.Oracle';”。

    provider=MSDAORA.1 存在乱码问题。 (比如:服务器oracle为utf8,客户端为日文系统时,中文显示乱码)

    provider='OraOleDb.Oracle' 不管Oracle服务器端用何字符集,读写中文均无乱码问题。


    http://bbs.csdn.net/topics/360194128 

    作为返回参数的Cursor,直接使用DataTable接受就可以了
    因为性能的原因,除非您显式指定,否则,Oracle 数据提供程序不会自动绑定 REF CURSOR 数据类型,因为 MSDAORA 会这样做。

    数据提供程序不支持任何 ODBC 转义序列,包括用于指定 REF CURSOR 参数的 {resultset} 转义。

    要执行返回 REF CURSOR 的存储过程,必须在 OracleParameterCollection 中定义参数,包括 Cursor 的 OracleType 以及 Output 的 Direction。数据提供程序只支持作为输出参数绑定 REF CURSOR。提供程序不支持 REF CURSOR 作为输入参数。

    不支持从参数值获取 OracleDataReader。在执行命令后,值属于 DBNull 类型。

    适用于 REF CURSOR 的唯一 CommandBehavior 枚举值(例如在调用 ExecuteReader 时)是 CloseConnection;所有其他枚举值均将被忽略。

    REF CURSOR 在 OracleDataReader 中的顺序取决于参数在 OracleParameterCollection 中的顺序。ParameterName 属性被忽略。

    不支持 PL/SQL TABLE 数据类型。但是,REF CURSOR 的效率更高。如果必须使用 TABLE 数据类型,请使用 OLE DB .NET 数据提供程序和 MSDAORA。


    
    展开全文
  • 文件上传成功后后台返回的response.getWriter().print("{success:'true',info:'操作成功!'}");在alert()中显示的是乱码, ...//防止返回的json变成乱码 response.getWriter().print(...
    文件上传成功后后台返回的response.getWriter().print("{success:'true',info:'操作成功!'}");在alert()中显示的是乱码,

    解决方法:

    response.setContentType("text/json; charset=utf-8");//防止返回的json变成乱码
    response.getWriter().print("{success:'true',info:'操作成功!'}");

    注:在IE6、Google浏览器中会把text/json当成文件下载,所以改为response.setContentType("text/html; charset=utf-8");
    展开全文
  • 中文乱码和代码页转换执行命令db2 connect to sample后系统返回如下错误:1. SQL0332N There is no available conversion for the source code page "819" to the target code page "1386". ...
  • mysql_query("SET NAMES GBK") or die(error(mysql_error())); $db = new mysqli(192.168.200.254, dxy ,p0o9i8u7, patent); if(!$db) { // Show error if we cannot connect. echo
  • 问题:在查询数据库数据时候只要查询语句中包含中文,但参数未乱码,查询没有返回数据解决方法:开始以为是文件编码问题,看了一下数据库编码和源文件编码,均为为utf-8,不是编码问题。百度了一下,然后在更改了...
  • 修改 Think\Db\Driver\Mysql.class 55 为了解决没有连接成功返回乱码
  • java 通过connector 访问 mysql, 可是里面返回的中文字符是乱码 排除一: mysql 里面直接查询出来的字符是中文的 排除二: connector的设置 jdbc:mysql://localhost:3306/envisionin_db?tinyInt1isBit=false&...
  • putty 下 sqlite3 输出中文乱码解决办法。 最近使用sqlite3在ubuntu下导入了一些股票信息到数据库。 然后把db文件拷贝到另外一台linux...结果返回一堆乱码。 于是退出putty,在putty设置选项里面,在tran
  • 先给properties文件配置成UTF8格式 ...jdbc:mysql://localhost:3306/oa_db?useUnicode=true&characterEncoding=utf8 注意:xml文件转中文格式时,也是上面一行代码,但是‘’&‘’符号要转义 ; >
  • 错误 0xc0202009: 数据流任务: SSIS 错误代码 DTS_E_OLEDBERROR。...源:“Microsoft SQL Native Client” Hresult: 0x80004005 说明:“链接服务器 ‘(null)’ OLE DB 访问接口’STREAM’ 返回了对列 ‘[!Bulk...
  • Oracle 中文乱码问题

    2015-07-20 10:42:24
    C#访问oracle,如果Oracle的字符集是 美国编码SIMPLIFIED CHINESE_CHINA.US7ASCII,则查询返回的中文会是乱码。  要想解决此问题,只能用OLEDB的连接方法:   用此连接方法,查询的值中中文显示正常,...
  • 客户端(gbk)经过连接器转换为 utf-8 传给 DB,DB返回给客户端数据,经过连接器转换为 gbk 传给客户端。 show variables like 'character%' 这三个就是上图中客户端、连接器、DB 字符集,连接器字符集无...
  • 如果我不设置数据库第四个参数返回的中文信息为null,如果将第四个参数设置为utf8 返回乱码,代码如下 直接上代码 ``` header('Content-type:application/json;charset=utf-8'); putenv("NLS_LANG=AMERICAN_...
  • if(str==null){//如果初次加载页面,直接返回,不会执行下面存取数据库代码 //return; }else{ //3存取数据库 //3.1获取数据库链接 Connection conn=DB.getConnection(); //3.2准备插入sql语句 String ...
  • 返回的数据乱码 <img alt="image" src="https://user-images.githubusercontent.com/21277567/91633737-59d05c80-ea1d-11ea-997d-6ed7c94f4dee.png" /></p> <p>httpResponse.toString()返回的是 <pre><code>bash ...
  • 后面汉字显示是乱码; //连接数据库 使用mysqli模式 $username="root"; $userpass="123456"; $servername = "localhost"; $dbname = "design"; $...
  • !... 此处返回值RetValue是有数据。 我希望把LIST转成Json,传给画面回调函数。但是网上搜了很多方法。 ...转出来,件数是对,但是内容是空。...我是从ORACLE DB中检索出来。有解决方案吗。小弟再次跪谢各路大神。
  • 零代码、热更新、自动化 ORM 库 后端接口和文档零代码,前端(客户端) 定制返回 JSON 数据和结构 English 通用文档 视频教程 在线体验 导航目录: 项目简介 上手使用 ...
  • //返回递增值,因为只psmt处理了一条记录,所以返回值就是一个 rsKeys.next(); rootid = rsKeys.getInt(1); //通过取结果集位置为1值来拿出递增值 Statement stmt = DB.createstmt...
  • 此问题是DBProxy在多个分表merge结果过程中未处理 NULL 值,导致结果集返回不对,而JDBC接口会认为此种情况下是未收到结果,会处于一直等待状态,触发超时 解决在分表情况下, IN 子句中分表列只支持 ...
  • // 入如果返回的是int类型可以用getInt() } } } catch (SQLException e) { System.out.println("MySQL操作错误"); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { conn....
  • 我们将db区分为传统关系型数据库如mysql,NoSql如redis、mongodb,时序数据库influxdb h2database 【DB系列】h2databse集成示例demo MongoDB 【DB系列】MongoDB之基本环境搭建与使用 【DB系列】MongoDB之查询...
  • Q:OD中代码乱码,如: 004365E0 >db 68 ; CHAR 'h' 004365E1 >db A4 004365E2 >db 7A ; CHAR 'z' 004365E3 >db E5 004365E4 >db B8 004365E5 >db E8 004365E6 >db BB A:OD右键,"分析/从模板中删除分析",如不行...
  • 实例067 建立与Java DB数据库连接 3.2 数据库与数据表 实例068 列举SQL Server数据库中数据表 实例069 列举MySQL数据库中数据表 实例070 查看数据表结构 实例071 动态维护投票数据库 实例072 SQL Server数据库...
  • 实例067 建立与Java DB数据库连接 3.2 数据库与数据表 实例068 列举SQL Server数据库中数据表 实例069 列举MySQL数据库中数据表 实例070 查看数据表结构 实例071 动态维护投票数据库 实例072 SQL Server数据库...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

db返回的乱码