﻿# ReportViewer 匯出 PDF 時，中文不會出現亂碼的方法

我們最近在開發 SQL Server 2005 的 Reporting Service 報表功能，而在使用 ReportViewer 查看報表時都沒問題：

[![ReportViewer 匯出 PDF 檔](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ab250475595f1dec0b91-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2b5f95ff8909ae264956-image_2.png) 

但是在執行匯出資料到 PDF 格式時，所有的中文字都會變成亂碼：

![ReportViewer 執行匯出資料到 PDF 格式時，所有的中文字都會變成亂碼](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4041d7da5d7959eda7df-image_5.png)

若要解決這個問題其實還蠻容易的，只要修改報表定義檔( \*.rdlc )中各物件的字型修改掉即可，預設來說預設的字型是 Tahoma，你必須改成 PMingLiU 即可。

而所有報表定義檔 ( \*.rdlc ) 都是 XML 語法，你只要直接將以下標籤定義：

```
<FontFamily>Tahoma</FontFamily>
```

全部都換成以下 PMingLiU 這個定義就可以了，這個代碼是「細明體」的字型代號：

```
<FontFamily>PMingLiU</FontFamily>
```

如果你要設定的字型是「標楷體」的話，可以用以下定義：

```
<FontFamily>DFKai-SB</FontFamily>
```

如果是在中國大陸常用的「宋體」字型，我就不知道是什麼代碼了，也許知道的網友可以提供給我知道。

你可以使用任何編輯器來修改，例如說你可以使用 [Notepad++](http://notepad-plus.sourceforge.net/tw/site.htm) 一次開啟所有 \*.rdlc 檔，然後用「取代所有開啟文件」的方式一次替換所有報表定義檔中的相關字串：

![你可以使用 Notepad++ 一次開啟所有 \*.rdlc 檔，然後用「取代所有開啟文件」的方式一次替換所有報表定義檔中的相關字串](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/25cab5f5e1ba8d594ef3-image_10.png)

這樣就可以省去用開發工具一個一個修改了。
