中国語文字化け問題の根本原因
ONLYOFFICE Document ServerをDockerコンテナで実行する際、Ubuntuベースの環境では中国語文字が正しく表示されない現象が発生します。これはLinux系OSのフォントレンダリング機構とWindowsの根本的な違いに起因します。特にDebian系ディストリビューションでは、中国語フォントが標準でインストールされておらず、文字コード処理のデフォルト設定が異なります。
ロケール設定の最適化
コンテナ起動時の言語環境を明示的に指定する必要があります。Docker Composeを使用する場合、環境変数を以下のように設定します。
version: '3'
services:
document-server:
image: onlyoffice/documentserver:latest
environment:
- TZ=Asia/Shanghai
- LANG_OVERRIDE=zh_CN.UTF-8
- LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
単一コンテナ実行時は--env-fileオプションで環境変数を一括設定可能です。重要なのはLANGではなくLC_ALLを優先的に設定することです。
フォントリソースの統合プロセス
中国語対応フォントをコンテナに組み込むため、Dockerfileに以下の処理を追加します。
FROM onlyoffice/documentserver:12.2
COPY resources/fonts/simhei.ttf /usr/share/fonts/truetype/custom/
RUN chmod 644 /usr/share/fonts/truetype/custom/*.ttf && \
fc-cache -fv && \
sed -i 's/DejaVu Sans/SimHei/g' /etc/fonts/local.conf
フォントファイルの配置後は、フォントキャッシュの再構築とフォントマッピング設定の修正が必要です。この例では明朝体(SimSun)ではなく、ゴシック体(SimHei)を使用しています。
文書エンジン設定の調整
ONLYOFFICEのコア設定ファイルを編集し、デフォルトフォントを明示的に指定します。
{
"services": {
"converter": {
"fonts": {
"fallback": ["SimSun", "Microsoft YaHei"],
"preferred": "Source Han Sans"
}
}
}
}
/etc/onlyoffice/documentserver/local.jsonに上記のJSON構造を追加することで、フォントフォールバックメカニズムを最適化できます。Noto Sans CJKやSource Han Sansなどのオープンソースフォントも有効です。
検証手順の自動化
修正後の動作確認を自動化するスクリプト例:
#!/bin/bash
curl -s http://localhost:8080/healthcheck | grep '"status":"ok"'
wget -qO- http://localhost/sample.docx | \
strings | grep -q "中文テスト"
この検証フローでは、ヘルスチェックAPIのステータス確認に加え、サンプルドキュメント内の中国語文字列検出を組み合わせています。