سؤال تغيير صفحة الرموز الافتراضية لوحدة تحكم Windows إلى UTF-8


أعمل حاليًا على نظام التشغيل Windows 7 x64 وأريد عادةً أن تعمل جميع أدوات وحدة التحكم مع UTF-8 بدلاً من استخدام الشفرة الافتراضية 850.

جري chcp 65001 في موجه الأوامر قبل استخدام أي أدوات مساعدة ولكن هل هناك أي طريقة لتعيين صفحة الرموز الافتراضية؟

تحديث:

متغير HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP قيمة ل 65001 يبدو لجعل النظام غير قادر على التمهيد في حالتي.

التغيير المقترح من HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun إلى @chcp 65001>nul خدم جيد فقط لغرضي. (شكرا ل Ole_Brun)


104
2018-04-12 10:42


الأصل


لاحظ أن الحل المقصود يمكن أن يؤدي إلى تعطيل Windows find.exe (والذي قد يتسبب في مشكلات في إنشاء Android SDK): superuser.com/questions/176737/... - J Rao
جلالة الملك ، عندما أستخدم chcp 65001 تحطمت نوافذ وحدة التحكم الخاصة بي عندما أقوم بالآتي ، لكنه يساعد على بدء تشغيل cmd.exe ببساطة مع علامة / u (nb: لا يستخدم unicode لأنه لا ينعكس في إخراج chcp.com) - eckes
يؤدي استخدام شفرة الترميز UTF-8 أيضًا إلى كسر more الأمر (يعطي رسالة خطأ مضللة Not enough memory.) فتح موجه الأوامر مع /U التبديل لا يساعد. - Synetech
وحدة تحكم Windows مليئة بالأخطاء عندما يتم تعيين الترميز إلى صفحة تعليمات برمجية متعددة البايت غير مدعومة مثل 65001. سيحصل أي برنامج يستخدم تعداد الإخراج من واجهات برمجة التطبيقات Win32 WriteFile / ReadFile على نتائج خاطئة ، وبناءًا على ذلك ، ستنشأ أشياء على ذلك مثل ملف MSVCRT تنفيذ stdlib ستنتج ناتج مشوهة / مكررة وتعلق على مدخلات عند مواجهة غير ASCII. حتى تحصل MS على حلها - وقد مرت عقود دون أي علامة على حدوث ذلك - فإن صفحة رموز الكونسول المتغيرة عالمياً إلى 65001 هي فكرة سيئة للغاية. - bobince
أي استخدام لل A إصدارات وظائف Windows معطلة.  كل الكود يجب أن يتم استدارته لاستخدام W الإصدارات. - Demi


الأجوبة:


لتغيير مخطط الشفرة لوحدة التحكم فقط ، قم بما يلي:

  1. ابدأ -> تشغيل -> regedit
  2. اذهب إلى [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. غيّر القيمة إلى chcp 65001

80
2018-04-12 12:22



يجب أن تدرك أن تغيير مخطط الشفرة لن يؤثر فقط على وحدة التحكم. لجعلها تنطبق فقط على وحدة التحكم ، يمكنك وضعها chcp 65001 داخل ال HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun. - Nils Magne Lunde
من المستغرب تغيير OEMCP جعل الإعداد التسجيل نظام بلدي غير قادر على التمهيد لذلك اضطررت إلى استخدام نظام الاسترداد لاستعادة حالة العمل. Autorun فعل الخدعة ، ولكن. - Regent
Regent: إذا كان هذا الحل يجعل نظامك غير قابل للتمهيد ، فلماذا حددته على أنه مقبول ، إذن؟ - Tim Pietzcker
galacticninja ببساطة chcp 65001 سيؤدي كل موجه أوامر مفتوح لفتح "صفحة الرموز النشطة: 65001" في حين @chcp 65001>nul سيمنع أي إخراج. - Regent
Autorun غير موجود بالنسبة لي تحت Windows 8.1. - kleinfreund


لا أحب تغيير النظام. هذا يخلق الكثير من المشاكل بالنسبة لي. أنا خلقت ملف دفعي:

@ECHO OFF
REM change CHCP to UTF-8
CHCP 65001
CLS

أنا حفظت في C: \ ويندوز \ SYSTEM32 كما switch.bat.

لقد قمت بإنشاء ارتباط لـ cmd.exe على سطح المكتب.

في خصائص cmd ، غير الوجهة إلى: C:\Windows\System32\cmd.exe /k switch

Voilá ، عندما أحتاج إلى كتابة UTF-8 ، أستخدم هذا الرابط.


33
2017-12-07 15:36



لاحظ أنه سوف يطبع Active code page: 65001 إلى المعيدين. لذلك إذا كنت تفعل شيء من هذا القبيل CHCP 65001 && mycommand.exe ثم ستحصل على صفحة الترميز المطبوع في البداية. أنت بحاجه إلى CHCP 65001 >nul && mycommand.exe - frumbert


ملف ريج:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. يجب أن تكون القيمة في ست عشري
  2. يجب تضمين السطر العلوي تمامًا كما هو
  3. لا يمكن اختصار HKEY_CURRENT_USER
  4. لا يمكن حذف الكلمة

موجه الأمر:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. يمكن أن تكون القيمة في dec أو hex
  2. يجب أن يكون escaped٪ SystemRoot٪
  3. لا يمكن حذف REG_DWORD

بوويرشيل:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. يمكن أن تكون القيمة في dec أو hex
  2. -Type DWord يفترض مع PowerShell 3+
  3. يمكن استخدام ni -> New-Item
  4. يمكن استخدام sp -> Set-ItemProperty
  5. يمكن استخدام -ea 0 -> -ErrorAction Ignore

سيغوين:

regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001
  1. يمكن أن تكون القيمة في dec أو hex
  2. يمكن استخدام / -> \
  3. يمكن استخدام HKCU -> HKEY_CURRENT_USER
  4. يمكن استخدام user -> HKEY_CURRENT_USER

26
2018-06-13 20:39





الأمر لتغيير مخطط الشفرة هو chcp <codepage>. مثال: chcp 1252. يجب عليك كتابته في نافذة Powershell. لتجنب المتاعب من كتابته في كل مرة (إذا كان عليك دائمًا تغيير مخطط الشفرة) ، يمكنك إلحاقه بسطر الأوامر الخاص بالبرنامج. للقيام بذلك، اتبع الخطوات التالية:

  1. انقر بزر الماوس الأيمن فوق رمز Powershell في القائمة ابدأ واختر "المزيد"> "فتح موقع الملف".
  2. انقر بزر الماوس الأيمن فوق اختصار Powershell وحدد "خصائص".
  3. أضف التالي إلى نهاية سطر الأوامر "Target": -NoExit -Command "chcp 1252"

كن سعيدا. لا تضغط على Windows Registry إلا إذا لم يكن لديك خيار آخر.


4
2017-11-02 21:11



هذا واحد عملت تماما بالنسبة لي. -NoExit -Command "chcp 1252 > null" يحذف أيضًا رسالة حول صفحة الرموز المحددة في البداية. - CodeMonkey


يمكن القيام بذلك عن طريق إنشاء ملف تعريف PowerShell وإضافة الأمر "chcp 65001> $ null" إليه:

PS> Set-ExecutionPolicy RemoteSigned
PS> New-Item -Path $Profile -ItemType file -Force
PS> notepad $Profile

لا يتطلب ذلك تحرير السجل ، وبخلاف تحرير الاختصار ، سيعمل إذا تم تشغيل PowerShell في مجلد معين باستخدام قائمة سياق مستكشف Windows.


1
2017-09-03 20:56



إذن هذا مختلف تمامًا عن الإجابة الأخرى التي تقترح استخدام chcp 65001؟ - Pimp Juice IT