ওয়েবক্লিয়েন্ট.ডাউনলোড স্ট্রিংয়ের ফলে এনকোডিংয়ের কারণে ম্যাঙ্গেল করা অক্ষরগুলির ফলাফল হয় তবে ব্রাউজারটি ঠিক আছে


86

নিম্নলিখিত কোড:

var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));

textঅন্যান্য বিভিন্ন জিনিসের মধ্যে স্ট্রিং রয়েছে এমন একটি ভেরিয়েবলের ফলাফল

"$ κ $ -মিনকভস্কি স্পেস, স্কেলারের ক্ষেত্র এবং লরেন্টজ আগ্রাসনের বিষয়টি"

তবে, যখন আমি ফায়ারফক্সে সেই ইউআরএল পরিদর্শন করি তখন আমি পাই

ink κ $ -মিনকোভস্কি স্পেস, স্কেলারের ক্ষেত্র এবং লরেন্তজ আগ্রাসনের বিষয়টি

যা আসলে সঠিক। আমিও চেষ্টা করেছি

var data = (new WebClient()).DownloadData("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
var text = System.Text.UTF8Encoding.Default.GetString(data);

কিন্তু এটি একই সমস্যা দিয়েছে।

আমি নিশ্চিত না যে এখানে দোষ কোথায় রয়েছে। ফিডটি কি ইউটিএফ 8-এনকোড হওয়া সম্পর্কে মিথ্যা বলেছে এবং ব্রাউজারটি এটি নির্ধারণের জন্য যথেষ্ট স্মার্ট, তবে তা নয় WebClient? ফিডটি কি সঠিকভাবে ইউটিএফ 8-এনকোডযুক্ত, তবে WebClientঅন্য কোনও উপায়ে ব্যর্থ হচ্ছে? এটি প্রশমিত করতে আমি কী করতে পারি?


6
UTF8Encoding.Defaultআসলে Encoding.Defaultএটি ওএস ভাষা সেটিংসের ভিত্তিতে এএনএসআই এনকোডিং।
সোভিক

উত্তর:


205

এটা মিথ্যা বলছে না। ডাউনলোডস্ট্রিং কল করার আগে আপনার ওয়েবক্লিয়েন্টের এনকোডিংটি প্রথমে সেট করা উচিত।

using(WebClient webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
string s = webClient.DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
}

আপনার বিকল্পটি কেন কাজ করছে না, কারণ এটি ব্যবহারটি ভুল। এটি হওয়া উচিত:

System.Text.Encoding.UTF8.GetString()

9
চমৎকার আপনাকে ধন্যবাদ! আশ্চর্যের বিষয় যে এটি WebClientশনাক্ত করতে শিরোনামগুলি ব্যবহার করে না, তবে এটি পুরোপুরি কার্যকর হয় এবং আপনার এবং @ স্পিকের মধ্যে, আমি বুঝতে পারি যে অন্য যে জিনিসটি চেষ্টা করার চেষ্টা করেছিল তাও খারাপভাবে ব্যর্থ হয়েছিল।
ডোমেনিক

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