在mssql2005中使用nvarchar字段类型
使用asp保存与显示韩文正常
但在php中显示韩文不正常,在现实中文时我使用了
iconv('gb2312','utf-8',$row['Name'])
但是韩文这样显示是乱码
请问如果在php中显示韩文怎么解决

解决方案 »

  1.   

    iconv('gb2312','utf-8',$row['Name']),你得用韩文的编码,同时页面的编码也得用韩文,去查header函数的用法
      

  2.   

    你得明白 iconv('gb2312','utf-8',$row['Name']) 是干什么的, 这个函数是把gb编码转成utf8编码
    韩文不是gb编码的, 这样转就会出错
    得去查查韩文是什么编码, 把这句改成
    iconv('xxxx','utf-8',$row['Name'])就可以了
      

  3.   

    iconv('gb2312','utf-8',$row['Name'])是中文
    我知道使用上面的语句可以使中文在php页面下显示正常,但不知道如何显示韩文怎么做,现在的情况是显示韩文是空格或者都是问号
    iconv('aaa','utf-8',$row['Name2'])是韩文
    这个aaa到底怎么做才可以
      

  4.   

    直接 页面用UTF-8就行了 不需要iconv.关键是你数据库保存数据的时候用的什么编码?如果不是UTF-8那就用UTF-8格式保存吧.这样直接读出来应该就OK了.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>xxxx</title>
    </head>
    <body>
    <?php
    $ko='류우익, 대북 유연성강조..아들 특채의혹 부인';
    echo $ko;
    ?>
    </body>
    </html>
      

  5.   

    这个是可以的,但保存到mssql2005里的是用asp+utf-8来做的
    我现在只是使用php调取里面的数据,除了韩文乱码;楼上使用的是可以直接显示,但问题是从mssql2005中读取时出现乱码问题
      

  6.   


    如果你数据库里的UTF-8显示正常 那么读出来就应该正常,当然我只有使用Mysql的经验 不清楚mssql是否还有蹊跷,按道理应该都一样才对.
    所以关键还是数据库的数据我觉得要重新处理 而不是iconv.
      

  7.   

    我也想过,如果实在不能解决,我还是用asp将数据显示出来,再用ajax载入过来
    这样也可以
    不过这只能治标不治本
      

  8.   

    nvarchar 类型 是以 unicode 编码存储数据的 mssql 专有的字段类型你可以尝试用 iconv('ucs-2','utf-8',$row['Name']) 进行编码转换
    如不行,请贴出 echo base64_encode($row['Name']); 的结果
    最好同时贴出正确的内容
      

  9.   


    $q = "select * from cd_departmentdtl where level = '1' and headid = 311 order by px,name";
    $r = mssql_query($q);
    $dev0 = "<select name=\"devi\" id=\"devi\" onchange=\"devichange(this.value)\">\n";
    $txt = sendmsg_bumen;
    $dev0 .= "<option value=''>$txt</option>\n";
    while($row=mssql_fetch_array($r)){
    if($_SESSION['lang']=='cn'){
    $dev0 .= "<option value=\"".$row['id']."\">".iconv('gb2312','utf-8',$row['Name'])."</option>\n";
    }else{
    $dev0 .= "<option value=\"".$row['id']."\">".iconv('ucs-2','utf-8',$row['Name2'])."</option>\n";

    }
    }
    $dev0 .="</select>";
    echo $dev0;这是源代码,
    刚才试了,还是乱码,并没有正确的韩文显示出来
      

  10.   

    你的代码并不能说明任何问题,因为我并没有你的数据库
    你的转码是在 if($_SESSION['lang']=='cn') 分支里进行的,并没有任何信息表示转码一定进行了
    我要求你给的内容,你并没有给出,须知这是解决问题的最短路径
      

  11.   

    确保数据库,网页都用UTF-8代码应该就行了,注意有时候一个PHP引用了另一个PHP页面,主PHP页面是UTF-8,但是被引用的页面如果你忘记修改编码了(比如还是GBK) 哪个被引用的页面ECHO的时候会以GBK的编码输出,导致乱码
      

  12.   

    韩文常用ANSI编码是euc-kriconv( 'euc-kr' , 'utf-8', ... )
      

  13.   

    服务器是windows2008中文版+mssql2005中文版
    在mssql里的数据都是通过asp插入更新数据,用php只是调取部分数据,有中文与韩文
    在表中字段Name2中的数据是韩文,可以在表中直接可以看到,中文通过iconv可以正常显示
    但韩文不可以,要么是空格,问号,要么就是乱码
      

  14.   

    因为页面无编码,浏览器会默认选择一个,通常就是浏览器本身的语言你要不断转换一下编码,iso-8859-1/euc-kr/gbk/utf-8...看看哪个才显示正确?或者能显示出乱码的汉字也行,不是问号就好办了
      

  15.   

    只需贴出 echo base64_encode($row['Name2']); 的结果
    就可以找到结决问题的方法,这样的事情都不愿意做。
    你已经无可救药了
      

  16.   


    <select name="devi" id="devi" onchange="devichange(this.value)">
    <option value="312">Pz8/</option>
    <option value="313">Pz8/Pz8/Pw==</option>
    <option value="315">Pz8/Pz8/</option>
    <option value="323">Pz8/Pw==</option>
    <option value="327">Pz8/Pw==</option>
    <option value="346">UExBTlQ/Pw==</option>
    <option value="356">Pz8/Pw==</option></select>
    韩文加了base64_encode()之后出来的结果
      

  17.   

    你给出的是被你加工过的数据,这是不行的只需贴出 echo base64_encode($row['Name2']); 的结果
      

  18.   

    $q = "select top 1 * from cd_departmentdtl where level = '1' and headid = 311 order by px,name";
    $r = mssql_query($q);
    $dev0 = "<select name=\"devi\" id=\"devi\" onchange=\"devichange(this.value)\">\n";
    $row=mssql_fetch_array($r);
    echo base64_encode($row['Name2']);
    mssql_close($db);
    这样输出对吗
      

  19.   

    那么你知道 Pz8/ 表示的是什么吗?
    echo base64_decode('Pz8/'); //???如果你提供的是真实的信息的话,那么你的数据库已经出问题了
      

  20.   

    在asp里读取Name2是正常的
      

  21.   

    或者是你设置了错误的 mssql.charset
      

  22.   

    代码问题多是编码出错,韩文也用UTF8可以,让数据库跟PHP文件编码统一下看还会出错不
      

  23.   

    我记得asp默认编码是 GB2312,也就是系统默认编码。难道跟这个有关系?
      

  24.   

    建议用UTF-8编码,不用做转换吧。