mssql_query("select * from 美沙酮门诊病人",$this->connection) 
跟踪事件探查器发现:
SQL语句变成下面这样了:select * from 缇庢矙閰棬璇婄梾浜请大侠帮忙解决下,不胜感激

解决方案 »

  1.   

    中文字符做表名,没事找事啊。先echo "select * from 美沙酮门诊病人" 看看有没有乱码。如果有的话,说明你的页面的编码与字符没有统一。
      

  2.   

    echo "select * from 美沙酮门诊病人 
    是乱码,大侠,应该怎么解决啊,希望大侠不吝赐教啊
      

  3.   

    一/加单引号
    mssql_query("select * from '美沙酮门诊病人'",$this->connection)  二/注意页面编码跟数据库编码,文件本身编码3者保持一至即可!如果数据库编码无法修改,推荐统一使用UTF-8,这样对站点扩展以后也有好处!
      

  4.   

    现在echo输出已经不乱码了,关键是传给sqlserver的语句中的中文部分还是一样乱码啊
      

  5.   

    经过测试 mysql的中文表名支持很好,没有任何问题 5.1.36版本楼主的mssql 没用过,不知道。 但我猜想,应该还是编码问题。建议 先看一下数据库用的是什么编码,然后把php和网页的编码与之统一。
      

  6.   

    首先确认你在代码编辑器中的编码,比如以UTF8为例,尝试在查询前先执行以下语句mssql_query("set names utf8");   
    mssql_query("set character set utf8");
      

  7.   

    楼上的大哥,sqlserver不支持你说的语句格式啊
    mssql_query("set names utf8");   
    mssql_query("set character set utf8");
      

  8.   

    我现在可以明确的说明一下:文件文本编码 utf-8,PHP页面编码:utf-8,数据库:GBK(这个没法改的)
    现在有什么办法处理吗?
      

  9.   

    既然数据库的编码为GBK又没法改,那就改 文本编码和php编码为GBK 好了
      

  10.   

    关键问题是:我是用Flex做前台的,Flex必须用utf-8编码啊
      

  11.   

    那试一下,各个数据库的语句有些细微的差别。mssql_query("SET NAMES 'utf8'");
      

  12.   

    mssql_query("select * from 美沙酮门诊病人",$this->connection)
    改成
    $table_name = mb_convert_encoding('美沙酮门诊病人','GBK','UTF-8');
    mssql_query("select * from $table_name ",$this->connection)
      

  13.   

    不好意思刚才查了一下,mssql对utf8确实不友好~utf8格式数据操作之前需要转码~劝你放弃中文表名。
      

  14.   

    网上的一个类似问题,你可以参考一下
    http://www.hatoyu.com/2008/12/17/pdo-mssql-%E4%B8%8D%E6%94%AF%E6%8C%81%E4%B8%AD%E6%96%87%E8%A1%A8%E5%90%8D/
      

  15.   

    进数据库之前转成GBK不就行了?18楼正解
      

  16.   

    研究来研究去终于找到解决办法了,谢谢大家的支持,我采用的是写sql的时候,表名和字段名都转化成拼音首字母+序号(防止字段名重复)然后再用iconv函数把结果送入sqlserver,那编码就能识别了,就能正常传入也能满足Flex的编码必须是UTF-8,而sqlserver是GBK的问题,再次感谢各位的大力支持,结贴给分