حل مشکل به‌هم‌ریختگی فارسی در فایل CSV در اکسل

از فروشگاه اینترنتی، نرم‌افزار حسابداری یا CRM یک فایل CSV گرفته‌اید و در اکسل به جای نام نوشته ظ†ط§ظ… را می‌بینید؟ فایل معمولاً سالم است؛ اکسل فایل UTF-8 بدون BOM را با Windows-1256 می‌خواند.

با متن و این فایل‌ها کار می‌کند:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

مثل خروجی اکسل، نسخه پشتیبان پایگاه داده، زیرنویس و کد وب‌سایت.

اصلاح

  1. فایل را بکشید یا متن را بچسبانید
  2. اصلاح خودکار انجام می‌شود
  3. نتیجه را کپی یا دانلود کنید
یا فایل را اینجا بکشید
  • بدون آپلود. فایل‌ها مستقیم داخل مرورگر شما اصلاح می‌شوند و هرگز از دستگاهتان خارج نمی‌شوند.

  • سرور در اتحادیه اروپا. Mojibuster روی سروری در فنلاند (اتحادیه اروپا) اجرا می‌شود؛ بنابراین مقررات عمومی حفاظت از داده‌ها (GDPR) برقرار است. متن مقررات (EUR-Lex، به انگلیسی)

چرا اکسل حروف عجیب نشان می‌دهد؟

وقتی فایل CSV را با دوبار کلیک باز می‌کنید، اکسل از کدگذاری پیش‌فرض ویندوز استفاده می‌کند. اگر زبان برنامه‌های غیریونیکد در تنظیمات منطقه‌ای ویندوز فارسی باشد، این کدگذاری Windows-1256 است. اما سرویس‌های امروزی فایل CSV را با UTF-8 خروجی می‌دهند. پس فایل سالم است و فقط در اکسل خراب دیده می‌شود. اگر ابتدای فایل یک BOM (نشانه‌ای به معنی «این فایل UTF-8 است») باشد، اکسل آن را درست می‌خواند.

فهرست مشتریان با UTF-8 که در اکسل با دوبار کلیک باز شده است

حروف عجیب

ظ†ط§ظ…,ط´ظ‡ط±,طھظ„ظپظ†
ط¹ظ„غŒ ط±ط¶ط§غŒغŒ,طھظ‡ط±ط§ظ†,+98 21 1234 5678

پس از اصلاح

نام,شهر,تلفن
علی رضایی,تهران,+98 21 1234 5678

از شکل حروف عجیب چه می‌فهمیم؟

  • ظ†ط§ظ… به جای نام: فایل UTF-8 که اکسل با تنظیمات فارسی آن را Windows-1256 خوانده است. حروف ط، ظ و غ مدام تکرار می‌شوند، چون هر حرف فارسی در UTF-8 با بایتی شروع می‌شود که در Windows-1256 یکی از این سه است.
  • نام: همان فایل در اکسلی با تنظیمات انگلیسی که آن را Windows-1252 می‌خواند.
  • äÇã: برعکس؛ فایلی که با Windows-1256 ذخیره شده و در برنامه‌ای با تنظیمات غربی باز شده است.
  • ???: فایل با کدگذاری‌ای ذخیره شده که حروف فارسی ندارد؛ حروف از دست رفته‌اند و قابل بازیابی نیستند.

سه حالت اول قابل اصلاح‌اند و Mojibuster هر کدام را خودکار تشخیص می‌دهد. اعداد و حروف لاتین در همه حالت‌ها سالم می‌مانند، چون در همه کدگذاری‌ها یکسان‌اند.

روش اول: ذخیره با UTF-8 و BOM در Mojibuster

  1. فایل CSV را در کادر بالا بکشید و رها کنید.
  2. بخش‌های خراب خودکار اصلاح می‌شوند. گزینه ذخیره با BOM برای فایل‌های CSV از پیش فعال است.
  3. فایل را دانلود کنید و در اکسل با دوبار کلیک باز کنید؛ حروف فارسی درست نمایش داده می‌شوند.

حتی اگر فایل خراب در اکسل دوباره ذخیره شده باشد، Mojibuster در بیشتر موارد متن درست را برمی‌گرداند. علت این حروف عجیب در موجیباکه چیست؟ توضیح داده شده است.

روش دوم: وارد کردن درست فایل در اکسل

  1. یک کاربرگ خالی باز کنید و Data (داده‌ها) ← From Text/CSV (از متن/CSV) را انتخاب کنید.
  2. فایل CSV را انتخاب کنید.
  3. در قسمت File Origin (مبدأ فایل) گزینه 65001: Unicode (UTF-8) را انتخاب کنید.
  4. پیش‌نمایش را بررسی کنید و روی Load (بارگذاری) کلیک کنید.

اگر پس از وارد کردن همه داده‌ها در یک ستون بود، جداکننده را بررسی کنید: بعضی سیستم‌ها ستون‌ها را با نقطه‌ویرگول ; جدا می‌کنند. جداکننده درست را در همان پنجره پیش‌نمایش انتخاب کنید.

Google Sheets، LibreOffice و اکسل مک

  • Google Sheets: یک جدول جدید باز کنید، سپس File ← Import را بزنید و فایل CSV را انتخاب کنید. Google Sheets فایل UTF-8 را بدون BOM هم درست می‌خواند، اما فایل‌های Windows-1256 را با � نشان می‌دهد. این فایل‌ها را اول به UTF-8 تبدیل کنید.
  • LibreOffice Calc: هنگام باز کردن هر فایل CSV پنجره‌ای برای انتخاب مجموعه نویسه (Character set) باز می‌شود. بسته به فایل، Unicode (UTF-8) یا Windows-1256 را انتخاب کنید و پیش از تأیید، پیش‌نمایش را ببینید.
  • اکسل مک: دوبار کلیک همین مشکل را دارد. از ابزار وارد کردن متن در منوی Data استفاده کنید و UTF-8 را به عنوان مبدأ فایل برگزینید، یا فایل را با BOM ذخیره کنید.

هنگام ذخیره از اکسل

در Save As قالب CSV UTF-8 (Comma delimited) را انتخاب کنید تا برنامه‌های دیگر فایل را بدون حروف عجیب بخوانند. قالب معمولی CSV (Comma delimited) از Windows-1256 استفاده می‌کند و نویسه‌هایی که در این کدگذاری نیستند ممکن است به ? تبدیل شوند.

چطور از این مشکل پیشگیری کنیم؟

  • اگر ممکن است، از سیستمی که فایل را خروجی می‌دهد UTF-8 همراه BOM بخواهید؛ بسیاری از فروشگاه‌ها و نرم‌افزارهای CRM این گزینه را در تنظیمات خروجی دارند.
  • وقتی کدگذاری فایل را نمی‌دانید، آن را به جای دوبار کلیک از راه From Text/CSV باز کنید.
  • فایلی را که با حروف عجیب نمایش داده می‌شود پیش از اصلاح ذخیره نکنید تا خرابی به سیستم‌های دیگر منتقل نشود.
  • برای نمایش جدول از راست به چپ از گزینه Sheet Right-to-Left در زبانه Page Layout استفاده کنید؛ این یک تنظیم نمایشی است و ربطی به کدگذاری ندارد.

پرسش‌های متداول

آیا در اکسل مک هم همین اتفاق می‌افتد؟

بله. اکسل مک هم اغلب فایل CSV با UTF-8 بدون BOM را تشخیص نمی‌دهد. ذخیره با BOM مطمئن‌ترین راه است.

BOM چیست؟

سه بایت نامرئی در ابتدای فایل که به برنامه‌هایی مانند اکسل می‌گوید فایل با UTF-8 ذخیره شده است.

چرا Google Sheets فایل را درست نشان می‌دهد ولی اکسل نه؟

Google Sheets همیشه UTF-8 فرض می‌کند، اما اکسل هنگام دوبار کلیک تا BOM نبیند از کدگذاری ویندوز استفاده می‌کند. خود فایل در هر دو حالت سالم است.

چرا اعداد درست‌اند ولی حروف فارسی خراب؟

اعداد و حروف لاتین در UTF-8 و Windows-1256 بایت‌های یکسانی دارند. فقط حروف فارسی به شکل متفاوتی ذخیره می‌شوند و فقط همان‌ها خراب می‌شوند.

نرم‌افزار حسابداری من فقط Windows-1256 می‌پذیرد. چه کنم؟

فایل را در اکسل با قالب CSV (Comma delimited) ذخیره کنید که از Windows-1256 استفاده می‌کند. اگر فایلی با این کدگذاری به دستتان رسید، تبدیل Windows-1256 به UTF-8 را ببینید.

آیا فایل‌های اطلاعات مشتریان امن می‌مانند؟

بله. فایل فقط داخل مرورگر پردازش می‌شود و به جایی ارسال نمی‌شود.

راهنماهای دیگر