انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => انجمن عمومی => نویسنده: bahman.azimii در 25 تیر 1393، 02:41 ب‌ظ

عنوان: چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟(حل شد)
ارسال شده توسط: bahman.azimii در 25 تیر 1393، 02:41 ب‌ظ
سلام

میخام یک برنامه بنویسم که یک جدول رو تو ترمینال نمایش بده که برای این کار نیاز دارم که بتونم کاراکترهایی که کد اسکیشون بین 127 تا 256 هست رو تو ترمینال چاپ کنم ولی بادستور cout این کاراکترها رو به شکل � نشون میده در ضمن برای این برنامه نیاز دارم که رنگ زمینه ورنگ متن رو هم برای یک کاراکتر خاص تغییر بدم . لطفا راهنمایی کنید که چطور میتونم این کارهارو انجام بدم .

پیشاپیش از پاسخگوییهاتون تشکر میکنم.
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟
ارسال شده توسط: B در 25 تیر 1393، 04:36 ب‌ظ
سلام

اول اینکه کدهای اسکی توسعه داده شده بین 128 تا 255 هست؛ باید از 128 تا 255 پرینت گرفته بشه
برای درست نشون دادن کاراکتر ها هم باید انکدینگ (encoding) ترمینالتون رو عوض کنید تا بتونه کارکاتر ها رو نشون یده!
توی Konsole‌ وقتی انکودینگ رو روی windows-1285 میذارم به راحتی کارکتر ها رو نشون میده! درحالی که وقی روی utf-8 میذارم نمیتونه نشون بده؛
اگه از gnome-terminal استفاده میکنید هم باید انکودینگ رو عوض کنید تا بتونید کاراکتر ها رو ببینید
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟
ارسال شده توسط: bahman.azimii در 25 تیر 1393، 05:22 ب‌ظ
سلام

اول اینکه کدهای اسکی توسعه داده شده بین 128 تا 255 هست؛ باید از 128 تا 255 پرینت گرفته بشه
برای درست نشون دادن کاراکتر ها هم باید انکدینگ (encoding) ترمینالتون رو عوض کنید تا بتونه کارکاتر ها رو نشون یده!
توی Konsole‌ وقتی انکودینگ رو روی windows-1285 میذارم به راحتی کارکتر ها رو نشون میده! درحالی که وقی روی utf-8 میذارم نمیتونه نشون بده؛
اگه از gnome-terminal استفاده میکنید هم باید انکودینگ رو عوض کنید تا بتونید کاراکتر ها رو ببینید


خیلی دسستتون درد نکنه خیلی ممنون که پاسخ دادین من از دیروز براش دنبال راه حل کد نویسی میگشتم.
آیا میشه از طریق کد سی هم داخل برنامه خودش انکودینگ ترمینال رو عوض کنه؟ بازم متشکرم.
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟
ارسال شده توسط: bahman.azimii در 25 تیر 1393، 05:49 ب‌ظ
میبخشید یک سوال دیگه داشتم انکودینگ صفحه command prompt تو ویندوز چیه در ضمن من انکودینگ windows-1285 رو ندارم ولی یک انکودینگ بنام (Arabic (windows -1256 دارم که حروف فارسی رو با کاراکتر ؟ نشون میده.
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟(حل شد)
ارسال شده توسط: bahman.azimii در 25 تیر 1393، 06:07 ب‌ظ
خیلی ممنون اون انکدینگی رو که میگفتین داشتم
مشکل برنامه هم با انکدینگ (central european(ibm852
حل شد این انکدینگ کاراکترهای نمایش کادر برای رسم جدول رو داره. ولی هنوز نتونستم انکدینگ guak رو تغییر بدم.
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟
ارسال شده توسط: B در 25 تیر 1393، 06:14 ب‌ظ
شدنو میشه؛
مثلا این اینک:
http://askubuntu.com/questions/87227/switch-encoding-of-terminal-with-a-command (http://askubuntu.com/questions/87227/switch-encoding-of-terminal-with-a-command)
کودینک Konsole رو عوض میکنه... میشه توی c هم کارش برد

ولی راه حل منطقی‌ای نیست!

فکر کنم باید بشه از طریق گونان کاراکترهای توسعه داده شده رو هم نمایش داد؛
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟(حل شد)
ارسال شده توسط: B در 25 تیر 1393، 07:02 ب‌ظ
من یه راه حل برنامه‌نویسی پیدا کردن براش: منبع (http://http://cboard.cprogramming.com/c-programming/123335-how-display-extended-ascii-characters-linux.html) و منبع (http://cboard.cprogramming.com/c-programming/121143-how-do-i-printf-%AE-console.html)
#include <wchar.h>
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL, "");
    wprintf(L"\u255F\n");
    return 0;
}


توسط این کد احتیاجی نیست دیگه انکودینگ ترمینال رو عوض کنید؛ ولی یه مشکلی هست!
دیگه نمیتونید از طریق کد اسکی؛ کاراکترها رو چاپ کنید؛ باید معادل کدها رو توی کدینگ utf8 بلد باشد!!
معادل این کد ها رو هم توی صفحه ویکی پدیا پیدا میکتید: یعنی از اینحا (http://en.wikipedia.org/wiki/Code_page_437) اونجا که نوشته   Standard code page

مثلا کاراکتری که کد اسکیش ۱۲۸ هست؛ رو نوشته 00C7 ؛ یه این معنی که باید توی قطعه کد بالایی که گذاشتم؛ 00C7 پرینت گرفته بشه! کد اسکی بعدی (۱۲۹) هست 00FC و ... همینطور تا آخر

وای اینکه چه ربطی بین 128 با 00C7 وجود داره رو نمیدونم!!
عنوان: پاسخ : چگونه میتوان کاراکتر های توسعه یافته را نمایش داد؟(حل شد)
ارسال شده توسط: bahman.azimii در 25 تیر 1393، 08:36 ب‌ظ
من یه راه حل برنامه‌نویسی پیدا کردن براش: منبع (http://http://cboard.cprogramming.com/c-programming/123335-how-display-extended-ascii-characters-linux.html) و منبع (http://cboard.cprogramming.com/c-programming/121143-how-do-i-printf-%AE-console.html)
#include <wchar.h>
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL, "");
    wprintf(L"\u255F\n");
    return 0;
}


توسط این کد احتیاجی نیست دیگه انکودینگ ترمینال رو عوض کنید؛ ولی یه مشکلی هست!
دیگه نمیتونید از طریق کد اسکی؛ کاراکترها رو چاپ کنید؛ باید معادل کدها رو توی کدینگ utf8 بلد باشد!!
معادل این کد ها رو هم توی صفحه ویکی پدیا پیدا میکتید: یعنی از اینحا (http://en.wikipedia.org/wiki/Code_page_437) اونجا که نوشته   Standard code page

مثلا کاراکتری که کد اسکیش ۱۲۸ هست؛ رو نوشته 00C7 ؛ یه این معنی که باید توی قطعه کد بالایی که گذاشتم؛ 00C7 پرینت گرفته بشه! کد اسکی بعدی (۱۲۹) هست 00FC و ... همینطور تا آخر

وای اینکه چه ربطی بین 128 با 00C7 وجود داره رو نمیدونم!!

بازم منون از توضیحاتتون . آیا دستوری هست که عدد کد یونیکد رو که تو یک متغییر عددی ذخیره شده بگیره و کاراکترشو نمایش بده؟