بر اساس جستجوهايي كه انجام دادهام، CHM پشتيباني كاملي را از يونيكد انجام نميدهد (مشكل جستجو و همچنين ايندكس كردن).
اما با ترفندي ميتوان اين مساله را حل كرد و آن هم تبديل encoding فايلها به عربي است (windows-1256). در اين حالت هم جستجو كار ميكند و هم عنوان صفحات هنگام جستجو در ليست موارد ياد شده درست نمايش داده ميشود و صفحه add to favorites نيز مشكلي در نمايش عنوانهاي صفحهها نخواهد داشت. روش كار به شرح زير است:
الف) encoding تمام فايلهاي html خود را به صورت زير تغيير دهيد (از utf-8 به windows-1256):
<meta content="text/html; charset=Windows-1256" http-equiv="Content-Type">
using System.IO;
using System.Text;
public static void SaveAs1256(string fileName)
{
string content = File.ReadAllText(fileName);
File.WriteAllText(fileName, content, Encoding.GetEncoding("windows-1256"));
}
ج) اصلاح فايل hhp پروژه خود
فايل hhp مربوط به html help work shop را باز كنيد. (همان فايل پروژه ساخت راهنما)
اگر مثال قبل را دنبال كرده باشيد، محتواي فايل آن چيزي شبيه به خطوط زير خواهد بود:
[OPTIONS]
Compatibility=1.1 or later
Compiled file=test.chm
Contents file=Table of Contents.hhc
Default Window=win1
Default topic=page1.html
Display compile progress=No
Full-text search=Yes
Index file=Index.hhk
Language=0x429 Farsi
Title=راهنماي يك
[WINDOWS]
win1=,"Table of Contents.hhc","Index.hhk","page1.html","page1.html",,,,,0x3420,,0x304e,,,,,,2,,0
[FILES]
page1.html
page2.html
[INFOTYPES]
به قسمت options چند سطر زير را اضافه كنيد: (زبان فارسي و فونت تاهوماي عربي)
Default Font=Tahoma,8,178
Language=0x429 Farsi
محض نمونه، كل وبلاگ جاري را به يك فايل chm تبديل كردهام كه آنرا از آدرس زير ميتوانيد دريافت نمائيد:
دريافت فايل
براي آزمايش، يك عبارت فارسي را در آن جستجو نمائيد.
پ.ن.
اين راه حلي است كه به نظر من رسيده و جواب داده. اگر شما با encoding هاي ديگر هم جواب گرفتهايد (مشكل جستجوي فارسي حل شده) لطفا پيغام بگذاريد. با تشكر.