又是编码问题

问题描述:

将以下文本保存为一个excel文件,中文显示有问题,但如果去掉标记为红色的部分,一切显示正常:
<div>
 <table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">
  <tr>
   <th scope="col">分类名</th><th scope="col">分类编码</th>
  </tr><tr>
   <td>按供应商属性分</td><td>&nbsp;03</td>
  </tr><tr>
   <td>长期供应商</td><td>&nbsp;0301</td>
  </tr><tr>
   <td>备选供应商</td><td>&nbsp;0302</td>
  </tr><tr>
   <td>黑名单供应商</td><td>&nbsp;0303</td>
  </tr><tr>
   <td>newNode</td><td>&nbsp;0304</td>
  </tr><tr>
   <td>newNode</td><td>&nbsp;0305</td>
  </tr><tr>
   <td>newNode</td><td>&nbsp;04</td>
  </tr><tr>
   <td>newNode</td><td>&nbsp;06</td>
  </tr><tr>
   <td>孙雷</td><td>&nbsp;07</td>
  </tr><tr>
   <td>孙雷</td><td>&nbsp;07</td>
  </tr>

 </table>
</div>
 
如果在文件的开头部分加上<meta http-equiv="Content-Type" content="text/html; charset=gb2312">则不论有无红色部分均能正常显示。

自己当时觉得很奇怪,但并没有想起来按照utf-8编码来保存那个excel文档。下面是请教了一个同事之后得出的一点结论:
   估计是 excel 内部有一个“自动识别编码”的功能
   1、当内容比较少时识别为 ansi,而中文内容过多时发现应该是 gb2312 的,但文件本身保存是按照 ansi 存的,按照 gb2312 解码出错
   2、加上文件头时 excel 直接按照 gb2312 识别,出错而专为 ansi 读取
   3、如果文件直接保存为 utf-8,测试不管有没有“孙雷”都没有问题
posted @ 2007-06-26 16:18  EagleFish(邢瑜琨)  阅读(234)  评论(0编辑  收藏  举报