কাজ করতে enc Ä get পেতে কী এনকোডিং


12

আমি VB.net- এ একটি ছোট অ্যাপ্লিকেশন লিখছি যা কন্ট্রোল প্যানেলে যাওয়ার পরিবর্তে পাসওয়ার্ড দিয়ে একটি ব্যবহারকারী "উইন্ডোজ 7 অ্যাকাউন্ট" তৈরি করতে সক্ষম করবে। আমার যে সমস্যাটি হচ্ছে তা হ'ল আমি যখন ইউটিএফ -8 এনকোডিং ব্যবহার করে ভিবি.net তে কোনও ব্যাট ফাইল তৈরি করি তখন এটি å ä write লিখবে না যেমন এটি মনে হয়। আমি যে সমস্ত এনকোডিংগুলি খুঁজে পেতে পারি তা চেষ্টা করেছি কিন্তু এটি কাজ করতে অক্ষম।

আমি কেন এটি পাচ্ছি সে সম্পর্কে কারও যদি ধারণা পাওয়া যায় তবে দয়া করে আমাকে জানান। থ্যাঙ্কস আগাম!


স্ট্যাকওভারফ্লো.কম এ পোস্ট করার চেষ্টা করুন এবং আপনার স্ক্রিপ্টটি দেখান।
টবি অ্যালেন

1
@ টবি অ্যালেন ওয়েল এটি আসলে কোনও প্রোগ্রামিং প্রশ্ন নয় তবে এনকোডিং পাঠ্যের বিষয়ে একটি প্রশ্ন, যখন আমি একটি "বাট" ফাইলটি "স্বাভাবিক" উপায়ে তৈরি করি তখন একই সমস্যা দেখা দেয়।
kagstrom2100

উত্তর:


12

সম্পাদনা: আমি ভুল ছিলাম;)
cmd.exeগ্রহণ করেন হল UTF-8 কিন্তু আপনি এটি সংরক্ষণ নিশ্চিত করা প্রয়োজন ছাড়াBOM ফাইল শুরুতে।

এখানে একটি দ্বিতীয় পরীক্ষা। আপনি chcp 65001আপনার ব্যাচ-ফাইলের শুরুতে ব্যবহার করতে পারেন ।

এখানে চিত্র বর্ণনা লিখুন


একটি ব্যাচের ফাইলটি ইউটিএফ -8 প্রকারের হতে পারে না । এএসসিআইআই হওয়া দরকার। Cmd.exeশুধু অন্য ফর্ম্যাট গ্রহণ করে না। আমি একটি ছোট পরীক্ষা করেছি এবং আপনি আপনার অক্ষরগুলি ব্যবহার করতে পারেন তবে এটির জন্য কিছু কাজ দরকার।

test.batদিয়ে একটি ফাইল তৈরি করুন echo Å Ä Ö। বিন্যাস সহ এটি সংরক্ষণ করুন ANSI/ASCII। একটি খুলুন cmd.exeএবং নিশ্চিত করুন যে আপনার cmd.exeব্যবহারগুলি Lucida Console(ইউনিকোডের অক্ষরগুলি প্রদর্শন করতে)।

আপনি যখন ফাইলটি টাইপ করবেন এটি পুরানো ডস-অক্ষর হিসাবে অক্ষরগুলি প্রদর্শন করবে। আপনি এখানে একটি অনুবাদ চার্ট দেখতে পারেন ।

আপনি যখন কোনও "উইন্ডোজ আনসি" তে স্যুইচ করেন - অক্ষরগুলি সহ কোড পৃষ্ঠা (অর্থাত্ পশ্চিম ইউরোপীয় লাতিন) chcp 1252সঠিকভাবে প্রদর্শিত হয়। তারা যদি তাদের নিজ নিজ ইউটিলিটিতে স্থানান্তরিত হয় তবে সেই ইউটিলিটির উপর নির্ভর করে।

তবে আপনি কেন এটির জন্য একটি ব্যাচ-ফাইল তৈরি করছেন? আপনি কি কেবল এটি ভিবি.net তে কোড করতে পারবেন না?

cmd.exe


2 # সম্পাদনা করুন:

আপনি এইভাবে সেট Lucida Consoleকরেছেন cmd.exe:

লুসিডা কনসোল


BOMএকটি হল UTF-8 ফাইলের শুরুতে 3 টি অক্ষর আছে। ( \xEF\xBB\xBF)।
VB.net আপনি একটি ফাইল তৈরি করবে ছাড়া একটি BOMভালো:

Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
                                                  '^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
    sink.WriteLine("...")
End Using

উত্তরের জন্য হাই এবং থ্যাঙ্কস। আমার ভিবিএন অ্যাপ্লিকেশনটিতে আমি কমান্ডগুলির সাহায্যে একটি .bat ফাইল তৈরি করার চেষ্টা করছি: নেট ব্যবহারকারী "ব্যবহারকারী নাম" নেট স্থানীয়গোষ্ঠী প্রশাসক "টাইপ" / অ্যাডমিনস্ট্রেটারের পরিবর্তে সুইডিশ শব্দ অ্যাডমিনিস্ট্রেটার ব্যবহার করার কারণটি স্থানীয় গ্রুপে জয়ী হওয়ায় ইংরেজী অনুবাদকে একটি দল হিসাবে গ্রহণ করবেন না।
kagstrom2100

আপনি যখন ভিজিএন নেটওয়্যার থেকে সরাসরি এটি করতে পারবেন তখনই কেবলমাত্র একটি ব্যাট-ফাইলের মধ্য দিয়ে যাওয়া খুব ভেবেছিল। এখানে মত । মধ্যে উদাহরণ প্রচুর গুগল খুব। সুতরাং মিডল ম্যান হিসাবে .bat তৈরি করার দরকার নেই। এবং এই উদাহরণগুলির সাহায্যে আপনি ইউনিকোড-নামটি সরাসরি উইন্ডোজ-ফাংশনে ফিড করতে পারেন। (যদি না কোনও কারণে আপনার ভিবি নেট অ্যাপ থেকে আলাদা সময়ে .bat চালানোর প্রয়োজন হয়?)
রিক

ওয়েল, আমি গুগলে ভিবি.net এ কিছু করার জন্য একটি উপায় খুঁজছিলাম, যদিও এটি করার কোনও উপায় আমি পাইনি। আপনি সংযুক্ত উদাহরণটি ইতিমধ্যে চেষ্টা করেছি এবং এটি কাজ করে বলে মনে হচ্ছে না। .Bat ফাইলটি বিওএম ব্যবহার না করে তা আমি কীভাবে নিশ্চিত করব? এছাড়াও লুসিডা কনসোল কী? আমি কেবল এটির সম্পর্কে জানতে পারি এটি হ'ল এটি একটি ফন্ট। দ্বিতীয় উদাহরণে / চিত্রটিতে আপনি ঠিক কাজটি করার চেষ্টা করার পরে আমি এই পেয়েছি i.imgur.com/6sh20j0.jpg
kagstrom2100

আমি অন্তর্ভুক্ত করার জন্য আমার উত্তরটিতে যুক্ত করেছি Lucida Consoleএবং ফাইল-তৈরি ছাড়া BOM(সম্পাদনা # 2, নীচে)। কিন্তু net userকমান্ড-প্রম্পটে কাজের মাধ্যমে এই ব্যবহারকারী তৈরি করা ? এবং আপনি এটি VB.net এর মাধ্যমে তৈরি করলে কী কাজ করে না? এর জন্য আমাদের কিছু উদাহরণ-কোড (বা একটি পৃথক প্রশ্ন) প্রয়োজন কারণ এটি কাজ করা উচিত। (বিটিডাব্লু আপনি আমার ছবিটি যুক্ত করেছেন, আপনার নয়, আমি মনে করি, আপনার মন্তব্যে)
রিক

2
@ জনল বিভান হ্যাঁ, আপনি ঠিক বলেছেন। দৃশ্যত findUTF-8 ইনপুট খুব ভাল না হ্যান্ডেল করে না। তবে আপনি ব্যবহার করতে পারেন findstr। এটি পছন্দ করুন:ping 127.0.0.1 -n 2 | findstr /C:" = "
রিক

2

আমার জন্য এটি যে বিষয়টি স্থির করেছিল তা হ'ল ফাইলটি বিওএম ছাড়াই ইউটিএফ -8 হিসাবে সংরক্ষণ করা এবং এই কোডটি ব্যবহার করা

@echo off
chcp 65001
net user Linus /add
net localgroup Administratörer Test/add

আমি আগে যে জিনিসটি ব্যবহার করিনি তা হ'ল @echo বন্ধ ছিল যাতে chcp 65001 ব্যবহার করা এটিই স্থির করে দেয়! সমস্ত সাহায্যের জন্য থ্যাঙ্কসও রিক :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.