কোনও ইউটিএফ -8 ফাইলকে এএসসিআইআইতে রূপান্তর করা (সেরা প্রচেষ্টা)


23

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

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

ইউনিক্সে উপলভ্য কোন ইউনিক্স সরঞ্জাম বা প্রোগ্রামিং ভাষার পাঠাগারটি আমাকে ইউটিএফ -8 থেকে এএসসিআইতে একটি শালীন (সর্বোত্তম প্রচেষ্টা) রূপান্তর করতে পারে?

বেশিরভাগ পাঠ্যটি ইউরোপীয়, লাতিন টাইপ ভিত্তিক ভাষায়।


1
আপনি কি জানেন কোন ভাষাটি শুরু হয়? উদাহরণস্বরূপ, কোনও উমলাউটের অ-উপলব্ধতা কীভাবে পরিচালনা করতে হবে তার মধ্যে একটি পার্থক্য রয়েছে (যেমন ö)। জার্মান ভাষায় আপনি সর্বদা "ওয়ে" লিখতে পারেন, তবে উদাহরণস্বরূপ ডাচ ভাষায় একটি উমলৌতের অপ্রাপ্যতা আরও ভালভাবে বর্ণিত হতে পারে ড্যাশ দ্বারা অনুসরণকারী বর্ণহীন অক্ষর (এবং সেখানে "ওই" সম্পূর্ণ আলাদা ডিপথং হবে)
অ্যান্থন

আপনি কীভাবে "যথাসম্ভব শালীন" সংজ্ঞায়িত করবেন? আসল অসুবিধাটি ম্যাপিংগুলি সংজ্ঞায়িত করা। তার তুলনায় প্রোগ্রামিং টাস্কটি তুচ্ছ। প্রকৃতপক্ষে ব্যবহৃত ম্যাপিংগুলি ভিন্নভাবে পরিবর্তিত হয় এবং এটি দুটি উপায়ে ভাষা-নির্দিষ্ট হতে পারে: এগুলি পাঠ্যের ভাষা এবং পাঠকের ধরে নেওয়া ভাষার উপর নির্ভর করে (বিশেষত রোম্যানাইজেশনের ক্ষেত্রে)।
Jukka K. Korpela

@ জুক্কা.কর্পেলা অবশ্যই "যথাসম্ভব শালীন" হিসাবে সংজ্ঞায়িত করেছেন যারা "ইউনিক্সে উপলব্ধ ইউনিক্স সরঞ্জাম বা প্রোগ্রামিং ভাষার গ্রন্থাগার" তৈরি করেছিলেন যা আমি জিজ্ঞাসা করছি। আমি যে সেরাটি যাচ্ছি তা যদি নন-এএসসিআইআই-র সবকিছুকে একটি আন্ডারস্কোর দিয়ে প্রতিস্থাপন করা হয়, তবে আমি আর কিছু করতে পারি না। আমার নিজের সরঞ্জামটি লেখা ছাড়া, যা আমি করব না। আমার ধারণা ইউনিক্স @ এসও এই প্রশ্নের পক্ষে সেরা জায়গা নাও হতে পারে…
ব্যবহারের 7610

1
@ user7610 iconvএবং এর trবাইরে ইউনিডিকোড রয়েছে । আমি এর সাথে পরিচিত নই, তবে পাইথন ব্যবহার করতে পারলে এটি আপনি যা চান তা করতে পারে।
হলুদন্তফিল

1
জাভাস্ক্রিপ্ট / নোডে @ এলিওয়্যান্টফিল বা নোড-ইউনিকডোড , সি -তে ইউনিডিকোডশার্প, বা পার্লে পাঠ্য :: ইউনিিডেকোড , যা এই নামের প্রথমটি হয়। আমার ধারণা অন্যান্য সংস্করণ আছে।
ব্যবহারকারী 7610

উত্তর:


11
konwert utf8-ascii

এটি রূপান্তর সারণীর উপর নির্ভর করে সেরা-প্রচেষ্টা রূপান্তরটি করবে। আপনি যদি আনুমানিক ইনপুট ভাষাটি জানেন, তবে ভাষা নির্দিষ্ট ফিল্টারগুলি আরও ভাল ফলাফল প্রদান করে, যেমন

konwert utf8-xmetodo

এক্স-মেটোডো উপস্থাপনায় এস্পেরান্তোর রূপান্তর,

konwert UTF8-tex

ডায়াক্রিটিক্সের টেক্স প্রতিনিধিত্ব করার চেষ্টা করবে, ভাষা নির্দিষ্ট পরামিতি রয়েছে:

konwert UTF8-ascii/de

সরল "ক" এর পরিবর্তে "ä" কে "এই" (জার্মানের প্রথাগত) তে অনুবাদ করা হবে

konwert UTF8-ascii/rosyjski

"ইংরাজির মতো" ইত্যাদিগুলির পরিবর্তে রাশিয়ান অনূদিত করার জন্য পোলিশ নিয়ম ব্যবহার করবে ...


এটি কি konwertওয়েবসাইটের সর্বশেষতম অবস্থান ? এটি কোথাও প্যাকেজ করা আছে? github.com/taw/konwert/tree/master/konwert-1.8
নিমো

25

এটি কিছু জিনিসের জন্য কাজ করবে:

iconv -f utf-8 -t ascii//TRANSLIT

echo ĥéĺłœ π | iconv -f utf-8 -t ascii//TRANSLITআয় helloe ?iconvরূপান্তর করতে জানেন না এমন কোনও অক্ষর প্রশ্ন চিহ্নের সাথে প্রতিস্থাপিত হবে।

iconvপসিক্স, তবে আমি জানি না যে সমস্ত সিস্টেমে TRANSLITবিকল্প রয়েছে কিনা । এটি আমার জন্য লিনাক্সে কাজ করে। এছাড়াও, IGNOREবিকল্পটি নীরবে অক্ষরগুলি বাতিল করে দেবে যা লক্ষ্য অক্ষর সেট (উপস্থাপনা) তে উপস্থাপন করা যায় না man iconv_open

একটি নিকৃষ্ট তবে POSIX- সম্মতিযুক্ত বিকল্পটি ব্যবহার করা tr। এই কমান্ডটি সমস্ত নন-এএসসিআইআই কোড পয়েন্টকে একটি প্রশ্ন চিহ্নের সাথে প্রতিস্থাপন করে। এটি UTF-8 পাঠ্য একবারে এক বাইট পড়ে। "É" এর সাথে প্রতিস্থাপন করা যেতে পারে E?বা ?এটি সংমিশ্রিত অ্যাকসেন্ট বা প্রিম্পম্পোজড অক্ষর ব্যবহার করে এনকোড করা হয়েছিল কিনা তার উপর নির্ভর করে।

echo café äëïöü | tr -d '\200-\277' | tr '\300-\377' '[?*]'

caf? ?????প্রাকটকম্পোজড অক্ষর ব্যবহার করে সেই উদাহরণটি ফিরে আসে ।


trএকবারে এক বাইট কাজ করার অর্থ নয়। জিএনইউ টিআর করে তবে এটি একটি বাগ।
স্টাফেন চ্যাজেলাস

3
iconv -f utf-8 -t ascii//TRANSLITআমার জন্য ভাল কাজ করেছে। এটি কোঁকড়ানো উদ্ধৃতিগুলি সোজা উদ্ধৃতিতে পরিবর্তিত হয়েছে। ধন্যবাদ।
কর্নেল আতঙ্ক

নোট করুন যে আইকনভি পিনয়িনের মতো ভারী উচ্চারণযুক্ত চরিত্রগুলিতে শ্বাসরোধ করবে।
স্বেস্তেচি

নোট করুন যে //TRANSLITঅন্যান্য অক্ষরের সেটগুলির জন্যও কাজ করে iso-8859-1//TRANSLIT
স্কিপি লে গ্র্যান্ড গৌড়

iconviconv: illegal input sequence at position 1234আমার জন্য ফাইলটি দেয় এবং কেটে দেয় । এটি কেবল চরিত্রটি মুছে ফেলা হয়েছে এবং আবার ক্রমটি বাছাই করার চেষ্টা করলে ভাল লাগবে।
jozxyqk


2

আমার ইউটিএফ -8 এ একটি ফাইল রয়েছে যাতে একাধিক ভাষায় [লোকের নাম] রয়েছে [যেটি আমি এএসসিআইআই-এর অর্থপূর্ণ কিছুতে রূপান্তর করতে চাই]।

আপনি বলতে চাইছেন যে আপনি নীচের নামগুলি কিছু ASCII স্ট্রিংয়ে রূপান্তর করতে সক্ষম হতে চান যার সাথে সম্পর্কিত ব্যক্তি আপত্তি করবে না?

  • ஐயங்கார் ராமானுஜன் ஐயங்கார்
  • عبد الله الثاني بن الحسين

আমার সন্দেহ হয় এমন কোনও স্বয়ংক্রিয় সরঞ্জাম নেই যা এটি করতে পারে। ব্যক্তিগত নামের কোনও বা অনেকগুলি ল্যাটিনাইজেশন হতে পারে। সফ্টওয়্যার সাংস্কৃতিকভাবে গ্রহণযোগ্য সংস্করণ চয়ন করতে পারে না। অন্তত জড়িত ব্যক্তির সংস্কৃতি সম্পর্কে অনেক কিছু জানতে সফটওয়্যার ছাড়া না।

Https://stackoverflow.com/a/1398403/477035 এও দেখুন


2
perl -e 'use utf8; use Text::Unidecode; print unidecode("عبد الله الثاني بسين")'produces d bd llh lthny bn lHsyn` উত্পাদন করে যা আমার উদ্দেশ্যগুলির জন্য যথেষ্ট পরিমাণে লিখিতভাবে লিখিত।
ব্যবহারকারী 7610

4
@ ইউজার 1076১০: জর্ডানের দ্বিতীয় রাজা আবদুল্লা একমত হতে পারেন না। সিইওর কাছে গুরুত্বপূর্ণ কেউ অভিযোগ করার ক্ষেত্রে আমি একটি ব্যাখ্যা প্রস্তুত করব :-)
রেডগ্রিটিব্রিক

2

আমি এর জন্য টেক্সট :: ইউনিডিকোড সহ পার্ল ব্যবহার করে শেষ করেছি । উদাহরণ:

perl -e 'use utf8; use Text::Unidecode; print unidecode("عبد الله الثاني بسين")

উত্পাদন bd llh lthny bn lHsyn, যা আমার উদ্দেশ্যে গ্রহণযোগ্য ফলাফল।

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