تاریخ عضویت: ۱۳۸۷ بهمن ۲۸
تشکرها : 11
( 2 تشکر در 1 ارسال )
۱۳۸۸ فروردین ۲۷, ۰۷:۳۷ ب.ظ
چرا برای جدا کردن مثلا کاراکتر نخست یک رشته فارسی که توسط متد post از صفحه دیگری دریافت میشود، باید دو کاراکتر اول را جدا کنیم؟
من این مشکل را دارم. انودینگ صفحهها هم utf-8 است.
ممنون.
تشکرها : 1363
( 6215 تشکر در 3451 ارسال )
۱۳۸۸ فروردین ۲۸, ۰۲:۳۰ ب.ظ
(آخرین تغییر در ارسال: ۱۳۸۸ فروردین ۲۸, ۰۲:۳۲ ب.ظ توسط admin.)
در هر حالتی که شما یه رشته رو به صورت کدهای به غیر از ASCII داشته باشید بر اساس اینکه چه تعداد بیت رو اشغال می کنند در php توسط توابعی مثل substr شناسایی میشن. کاراکترهای ASCII یک بایت فضا رو می گیرند اما کاراکترهای فارسی که در انکودینگ UTF-8 قرار می گیرند دو بایت رو اشغال می کنه. در واقع توابعی مثل substr یا strlen بر اساس بیت کارشون رو انجام میدن و هر 8 بیت رو یک کاراکتر در نظر می گیرند.
برای اینکه با این مشکلات مواجه نشید باید از بسته mbstring استفاده بشه که توابعی مثل mb_substr یا mb_strlen رو در اختیار شما قرار میده