کد ملی با صفر یا بدون صفر یعنی چه؟ اعتبارسنجی درست کد ملی در فرم

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

تیم پرسینو13 Sep 20265 min readRead this article in English

پاسخ کوتاه: کد ملی با صفر یعنی سه رقم اول آن، که کد شهرستان محل صدور است، با صفر شروع می‌شود؛ مثلاً کد ملی بیشتر کسانی که کدشان در تهران صادر شده با صفر و گاهی با دو صفر شروع می‌شود. این صفر جزء کد است و کد ملی با صفر کاملاً معتبر است.

کد ملی بدون صفر هم دو حالت دارد: یا کد در شهرستانی صادر شده که کدش با صفر شروع نمی‌شود، که کاملاً عادی و معتبر است؛ یا صفرهای اول کد جایی حذف شده و ۸ یا ۹ رقم مانده، که ناقص است و باید صفرها به ابتدایش برگردند.

کد ملی با صفر یعنی چه؟

کد ملی ده رقم دارد: سه رقمِ اول کدِ شهرستانِ محلِ صدور است، شش رقمِ بعد شماره‌ی منحصربه‌فردِ فرد و رقمِ آخر رقمِ کنترلی. برای همین کد ملیِ کسانی که کدشان در شهرهایی مثل تهران صادر شده، با صفر — و گاهی دو صفر — شروع می‌شود. این صفر جزئی از کد است، نه خطا؛ کدِ با صفر همان‌قدر معتبر است که بقیه.

صفرهای اول در جمعِ رقمِ کنترلی سهمی ندارند، چون صفر ضرب در هر ضریبی صفر است؛ ولی جای رقم‌های بعدی را نگه می‌دارند. اگر حذف شوند، هر رقم ضریبِ اشتباهی می‌گیرد و کدِ درست نامعتبر به نظر می‌رسد.

کد ملی بدون صفر یعنی چه؟

  • کدِ ده‌رقمی که با صفر شروع نمی‌شود: کد در شهرستانی صادر شده که کدش صفر ندارد. هیچ فرقی در اعتبار با کدهای صفردار ندارد.
  • کدی که ۸ یا ۹ رقم مانده: صفرهای اولش جایی حذف شده، معمولاً در اکسل یا نرم‌افزاری که کد را «عدد» حساب کرده است. کد ملی همیشه ده رقم است؛ آن‌قدر صفر به ابتدایش اضافه کنید تا ده رقم شود.

اگر ستونِ کدها در اکسل عددی شده، فرمولِ =TEXT(A2,"0000000000") هر کد را با صفرهای اول به ده رقم برمی‌گرداند (در بعضی تنظیماتِ منطقه‌ای به جای «,» از «;» استفاده کنید). برای بررسیِ یک‌جای یک ستون، ابزار بررسی صحت کد ملی کدهای ۸ و ۹ رقمی را با صفر کامل می‌کند و هشدار می‌دهد.

اعتبارسنجی درست کد ملی در فرم

بیشتر فرم‌های فارسی برای کد ملی فقط طول را چک می‌کنند: ده رقم؟ قبول. نتیجه این است که «۱۲۳۴۵۶۷۸۹۰» هم رد می‌شود و می‌رود توی پایگاه‌داده‌تان.

کد ملی رقم کنترلی دارد

رقم دهم کد ملی تصادفی نیست؛ از روی ۹ رقم اول حساب می‌شود. الگوریتمش:

  1. هر رقم از چپ در ضریبی از ۱۰ تا ۲ ضرب می‌شود (رقم اول در ۱۰، دومی در ۹، …، نهمی در ۲).
  2. حاصل‌ها جمع می‌شوند و باقی‌مانده‌ی تقسیم بر ۱۱ گرفته می‌شود.
  3. اگر باقی‌مانده کمتر از ۲ بود، رقم کنترلی خودِ باقی‌مانده است؛ وگرنه ۱۱ منهای باقی‌مانده.

یعنی از هر ۱۰ عدد ده‌رقمی، تقریباً یکی می‌تواند کد ملی معتبر باشد. اعتبارسنجی الگوریتمی حدود ۹۰٪ ورودی‌های تصادفی را همان‌جا رد می‌کند — بدون اینکه به هیچ سرویس بیرونی وصل شوید.

کدهای تکراری که باید رد شوند

یک تله: کدهایی مثل «۱۱۱۱۱۱۱۱۱۱» از نظر الگوریتم بالا معتبر درمی‌آیند. هر پیاده‌سازی درستی باید این‌ها را جداگانه رد کند.

ارقام فارسی هم باید بگیرد

کاربر ایرانی ممکن است با کیبورد فارسی «۰۰۱۲۳۴۵۶۷۸» بنویسد. اگر فرم فقط ارقام لاتین بپذیرد، کاربر خطا می‌بیند و نمی‌فهمد چرا — چون از نظر خودش عدد درستی نوشته. فیلد کد ملی باید ارقام فارسی و عربی را خودکار به لاتین تبدیل کند، نه اینکه خطا بدهد.

همین نکته موقع مقایسه هم مهم است: اگر می‌خواهید هر کد ملی فقط یک بار پاسخ بدهد، «۱۲۳» و «123» باید یک نفر حساب شوند. وگرنه محدودیت با عوض‌کردن کیبورد دور زده می‌شود.

صفر ابتدایی را نخورید

کد ملی خیلی از شهرها با صفر شروع می‌شود. اگر فیلد را «عدد» تعریف کنید، صفرِ اول در اکسل و در پایگاه‌داده حذف می‌شود و کد ۹ رقمی می‌شود. کد ملی متن است نه عدد — حتی اگر فقط رقم داشته باشد.

همین اشتباه سر شماره موبایل و شماره حساب هم رخ می‌دهد و معمولاً وقتی کشف می‌شود که دیگر هزار رکورد خراب دارید.

چه وقت اصلاً کد ملی نخواهید

کد ملی داده‌ی هویتی حساس است. اگر فقط می‌خواهید «هر نفر یک بار» پاسخ بدهد، کد پرسنلی یا شماره موبایل همان کار را می‌کند و ریسک کمتری دارد. کد ملی را وقتی بخواهید که واقعاً لازمش دارید — قرارداد، گواهی رسمی، احراز هویت.

پرسش‌های پرتکرار

کد ملی با صفر یعنی چه؟

یعنی کدِ شهرستانِ محلِ صدور، که سه رقمِ اولِ کد ملی است، با صفر شروع می‌شود؛ مثلاً بیشترِ کدهایی که در تهران صادر شده‌اند. صفر جزءِ کد است و کدِ با صفر کاملاً معتبر است.

کد ملی بدون صفر یعنی چه؟

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

کد ملی را با صفر وارد کنم یا بدون صفر؟

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

کد ملی ۹ رقمی یعنی چه؟

یعنی یک صفرِ ابتدایی‌اش حذف شده است؛ کد ملی همیشه ده رقم دارد. یک صفر به ابتدای کد اضافه کنید (برای کدِ ۸ رقمی دو صفر) و بعد آن را بررسی کنید.

فرم آنلاین پرسینو کد ملی با صفر را درست ذخیره می‌کند؟

بله. فیلدِ کد ملی کد را متن نگه می‌دارد تا صفرِ اول حذف نشود، ارقامِ فارسی را می‌پذیرد و رقمِ کنترلی را همان لحظه‌ی پرکردنِ فرم بررسی می‌کند.

Tags:کد ملیاعتبارسنجیداده تمیز