প্রতীক রূপান্তর করা, অ্যাকসেন্ট চিঠিগুলি ইংরাজি বর্ণমালায় রূপান্তর করা


129

সমস্যাটি হ'ল, আপনি জানেন, হাজার হাজার চরিত্র রয়েছে ইউনিকোড চার্টে কয়েক রয়েছে এবং আমি অনুরূপ সমস্ত অক্ষরগুলিকে ইংরেজি বর্ণমালায় রূপান্তর করতে চাই।

উদাহরণস্বরূপ এখানে কয়েকটি রূপান্তর রয়েছে:

ҥ->H
Ѷ->V
Ȳ->Y
Ǭ->O
Ƈ->C
tђє Ŧค๓เℓy --> the Family
...

এবং আমি দেখেছি যে A / a বর্ণের 20 টিরও বেশি সংস্করণ রয়েছে। এবং আমি তাদের শ্রেণিবদ্ধ করতে জানি না। তারা খড়ের কাঠের সূঁচের মতো দেখতে।

ইউনিকোড অক্ষরের সম্পূর্ণ তালিকাটি http://www.ssec.wisc.edu/~tomw/java/unicode.html বা http://unicode.org/charts/charindex.html এ রয়েছে । কেবল নীচে স্ক্রোল করার চেষ্টা করুন এবং বর্ণগুলির বিভিন্নতা দেখুন।

আমি এই সমস্ত জাভা দিয়ে কীভাবে রূপান্তর করতে পারি? আমাকে সাহায্য করুন :(


এই প্রশ্নটি দেখুন: stackoverflow.com/questions/249087/… - এই বিষয় সম্পর্কে আরও কিছু প্রশ্ন থাকা উচিত, তবে আমি এই মুহুর্তে তাদের খুঁজে পাচ্ছি না।
schnaader

1
আপনার তৃতীয় উদাহরণটি Ȳ → ওয়াই হওয়া উচিত?
ডোর হাই আর্চ

2
আপনি কেন এটা করতে চান? যদি আমরা জানতাম যে আপনার সামগ্রিক লক্ষ্যটি কী, আমরা সম্ভবত আরও সহায়ক হতে সক্ষম হতে পারি।
ডেভিড থর্নলে

ডেভিড আপনি জানেন কিছু ইএমও বাক্যে বিভিন্ন অক্ষর ব্যবহার করে। এখানে আপনি একটি উদাহরণ: ฬ। ¢। এটি সমাধান করুন :) @ স্কনাডার, আমি মনে করি এটি যা আমি খুঁজছি তবে জাভাতে নয়।
আহমেটবি - গুগল

এই কথোপকথনটি আগেই হয়ে গেছে - উপরে @ এসএসএএনডার দেখুন।
dkretz

উত্তর:


197

আমার পোস্টটি পুনরায় পোস্ট করা কীভাবে আমি .NET এর স্ট্রিং থেকে ডায়াক্রিটিক্স (অ্যাকসেন্ট) সরিয়ে ফেলব?

এই পদ্ধতিটি জাভাতে সূক্ষ্মভাবে কাজ করে (বিশুদ্ধভাবে ডায়াক্রিটিকাল চিহ্নগুলি ওরফে অ্যাকসেন্টগুলি সরিয়ে দেওয়ার উদ্দেশ্যে)

এটি মূলত সমস্ত উচ্চারণকৃত অক্ষরকে তাদের ডিএসেন্টেড সমমনা অংশগুলিতে রূপান্তর করে যার পরে তাদের সম্মিলিত ডায়াক্রিটিক্সকে অনুসরণ করে। এখন আপনি ডায়রিটিক্সগুলি সরিয়ে ফেলার জন্য একটি রেজেক্স ব্যবহার করতে পারেন।

import java.text.Normalizer;
import java.util.regex.Pattern;

public String deAccent(String str) {
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(nfdNormalizedString).replaceAll("");
}

4
InCombiningDiacriticalMarks সমস্ত সিরিলিকগুলিকে রূপান্তর করে না। উদাহরণস্বরূপ Општина ou অনুচ্চারিত। এটা তোলে চমৎকার হবে যদি এক Opština Bogomila বা কিছু তা রূপান্তর করতে পারে
iwein

13
এটি মোটেও লিপ্যন্তরিত হয় না। এটি কেবল পচে যাওয়া ডায়াক্রিটিকাল চিহ্নগুলি ("উচ্চারণ") সরিয়ে দেয় s পূর্ববর্তী পদক্ষেপ (ফর্ম.এনএফডি) ভেঙে যায় a এ + তে, অর্থাৎ উচ্চারণযুক্ত চরিত্রটিকে একটি অচিরাচরিত অক্ষর এবং ডায়াক্রিটিকাল চিহ্ন হিসাবে বিভক্ত করে। এটি সিরিলিককে "রূপান্তর" করতে পারে তবে আরও নয়।
MSalters

1
জর্জ পোস্ট এটি ভালো হতে পারে এ \\ পি {আইএসএস} \\ পি {InCombiningDiacriticalMarks} পরিবর্তে ব্যবহার glaforge.appspot.com/article/... নোট যে আমি এটা পরীক্ষিত নি।
এটোরাস

2
\\ p {ইসম} স্প্যানিশ অ্যাকসেন্টগুলির জন্য á ó ú ñ é í এর মতো কাজ করে বলে মনে হয় না í বিপরীতে, "\\ পি {ইনকোবাইনিং ডায়াক্রিটিকালমার্কস} + এটির জন্য ভাল কাজ করছে
লুজ

এটি সমস্ত বিশেষ চরিত্রের জন্য কাজ করে না - আমি এটি জানতে অ্যান্ড্রয়েডের জন্য একটি ভুল সমস্যা জমা দিয়েছি -> কোড. google.com/p/android/issues/detail?id=189515 এটি করার সঠিক উপায় কি কেউ জানেন?
মিচা তাজচের্ট

71

এটি ভার্চ হিসাবে অ্যাপাচি কমন্স ল্যাংয়ের একটি অংশ । 3.0।

org.apache.commons.lang3.StringUtils.stripAccents("Añ");

আয় An

এছাড়াও http://www.drillio.com/en/software-development/java/removing-accents-diacritics-in-any-language/ দেখুন


এই সমাধানটি আশ্চর্যজনক। এটি গ্রীক নিয়েও কাজ করে! ধন্যবাদ.
টম

5
এটি পোলিশ অক্ষরগুলির অনুবাদ থেকে perfect এবং missing অনুপস্থিত: নিখুঁত নয়: ইনপুট: ŚŻÓŁĄĆĘŹąółęąćńŃ আউটপুট: SZOŁACEZaołeacnN
রবার্ট

1
দুর্দান্ত ইউটিলিটি তবে যেহেতু এর কোডটি গ্রহণযোগ্য উত্তরে যেমন দেখানো হয়েছে ঠিক তেমনই হ'ল এবং আপনি কমন্স ল্যাংয়ের উপর নির্ভরতা যুক্ত করতে চান না, আপনি কেবল উল্লিখিত স্নিপেটটি ব্যবহার করতে পারেন।
পোলারেটো

1
আমার ক্ষেত্রে এপাচি প্রচলিত রয়েছে: D ডি তে রূপান্তর করবেন না
হোয়াং

@ হোয়াং, রবার্ট সম্ভবত একটি অনুরোধ পাঠানোর সুযোগ পাবেন :)
ওন্দ্র Žindraka

19

"তাদের সকলকে রূপান্তর" করার চেষ্টা করা সমস্যার ভুল পদ্ধতি।

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

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

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

এটি এমন একটি অ্যাপ্লিকেশনটিতে কাজ করার অভিজ্ঞতা থেকে আসে যা শেষ ব্যবহারকারীদের ডায়াস্রিটিক অক্ষর অন্তর্ভুক্ত গ্রন্থপঞ্জি সম্পর্কিত ডেটা অনুসন্ধান করার অনুমতি দেওয়ার জন্য প্রয়োজনীয় ছিল। অনুসন্ধানের অ্যারেগুলি (এটি আমাদের ক্ষেত্রে যেমন ছিল) তৈরি হতে সমস্ত পশ্চিমা ইউরোপীয় ভাষার জন্য সমস্ত ছদ্মবেশী চিহ্ন .াকতে সম্ভবত 1 ম্যান দিন লেগেছিল।


উত্তর দেওয়ার জন্য ধন্যবাদ। আসলে আমি আরবী ভাষা বা এরকম কিছু নিয়ে কাজ করছি না। আপনি জানেন যে কিছু লোক ডায়ারট্রিটিকসকে মজাদার চরিত্র হিসাবে ব্যবহার করেন এবং আমাকে যতটা করতে পারি তা সরিয়ে ফেলতে হবে। উদাহরণস্বরূপ, আমি উদাহরণটিতে "tђє Ŧ ค ๓ เ --y -> পরিবার" রূপান্তরটি বলেছিলাম তবে এটি সম্পূর্ণ রূপান্তরিত করা কঠিন বলে মনে হচ্ছে। তবে, আমরা একটি সহজ উপায়ে "òéışöç-> আইজোক" রূপান্তর করতে পারি। তবে এটি করার সঠিক উপায় কী। অ্যারে তৈরি করা এবং ম্যানুয়ালি প্রতিস্থাপন করা হচ্ছে? বা এই সমস্যাটি সম্পর্কে এই ভাষাটির স্থানীয় ফাংশন রয়েছে?
আহমেটবি - গুগল

15

যেহেতু "পরিবার" কে "tђє Ŧ ค ๓ เ ℓy" রূপান্তরিত করে এনকোডিং কার্যকরভাবে এলোমেলো এবং কোনও ইউগোরিদম অনুসরণ করে না যা ইউনিকোড কোডপয়েন্টগুলির সাথে জড়িত তথ্য দ্বারা ব্যাখ্যা করা যায়, তাই এই অ্যালগরিদমিকভাবে সমাধান করার কোনও সাধারণ উপায় নেই।

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

স্পষ্ট করার জন্য: কিছু বিকল্পগুলি আসলে ইউনিকোড ডেটার মাধ্যমে সমাধান করা যেতে পারে (অন্যান্য উত্তরগুলি যেমন দেখায়) তবে কিছু অক্ষরগুলির সাথে ল্যাটিন অক্ষরগুলির সাথে সামঞ্জস্যপূর্ণ কোনও যুক্তিসঙ্গত মিল নেই।

উদাহরণ:

  • "ђ" (ইউ + 0452 সিরিলিক স্মার্ট লেটার ডিজেই) "ডি" এর সাথে "এইচ" এর চেয়ে বেশি সম্পর্কিত, তবে "এইচ" উপস্থাপনে ব্যবহৃত হয়।
  • "Ŧ" (ইউ + 0166 ল্যাটিন ক্যাপিটাল লেটার টি উইথ স্ট্রোক) কিছুটা "টি" এর সাথে সম্পর্কিত (নামটি যেমন বোঝায়) তবে এটি "এফ" উপস্থাপন করতে ব্যবহৃত হয়।
  • "ค" (U + 0E04 থাই চরিত্র খো খাওয়াই) কোনও ল্যাটিন চরিত্রের সাথে সম্পর্কিত নয় এবং আপনার উদাহরণে "এ" প্রতিনিধিত্ব করতে ব্যবহৃত হয়

7

মূল অনুরোধ ইতিমধ্যে উত্তর দেওয়া হয়েছে।

তবে আমি জাভাতে ল্যাটিন / ইংরাজিতে যে কোনও অক্ষরকে অনূদিত করার জন্য জেনেরিক ট্রান্সলিটেশন কোড খুঁজছেন তাদের জন্য নীচের উত্তরটি পোস্ট করছি।

ট্র্যানলাইটের অর্থহীন অর্থ: এর চূড়ান্ত ফর্ম / টার্গেট চরসেটটির মূল রূপটিতে স্ট্রিংয়ের মতো অনূদিত স্ট্রিং। যদি আমরা যে কোনও অক্ষরটি লাতিন (ইংরেজি বর্ণমালা) তে অনুবাদ করতে চাই, তবে আইসিইউ 4 (জাভাতে আইসিইউ 4 জে লাইব্রেরি) কাজটি করবে।

জাভাতে কোড স্নিপেট এখানে:

    import com.ibm.icu.text.Transliterator; //ICU4J library import

    public static String TRANSLITERATE_ID = "NFD; Any-Latin; NFC";
    public static String NORMALIZE_ID = "NFD; [:Nonspacing Mark:] Remove; NFC";

    /**
    * Returns the transliterated string to convert any charset to latin.
    */
    public static String transliterate(String input) {
        Transliterator transliterator = Transliterator.getInstance(TRANSLITERATE_ID + "; " + NORMALIZE_ID);
        String result = transliterator.transliterate(input);
        return result;
    }

7

স্ট্রিং পরীক্ষিত: ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝß

পরীক্ষিত:

শেষ পছন্দটি সেরা।


1
শুধু এ রিডমি অনুসরণ @mehmet github.com/xuender/unidecode । নির্ভরতা আমদানির পরে এটি Unidecode.decode ("ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝß") এর মতো কিছু হওয়া উচিত।
ক্যাকটাসচিবার

6

যদি প্রয়োজন হয় "òéışöç-> আইজোক" রূপান্তর করা, আপনি এটি একটি সূচনা পয়েন্ট ব্যবহার করতে পারেন:

public class AsciiUtils {
    private static final String PLAIN_ASCII =
      "AaEeIiOoUu"    // grave
    + "AaEeIiOoUuYy"  // acute
    + "AaEeIiOoUuYy"  // circumflex
    + "AaOoNn"        // tilde
    + "AaEeIiOoUuYy"  // umlaut
    + "Aa"            // ring
    + "Cc"            // cedilla
    + "OoUu"          // double acute
    ;

    private static final String UNICODE =
     "\u00C0\u00E0\u00C8\u00E8\u00CC\u00EC\u00D2\u00F2\u00D9\u00F9"             
    + "\u00C1\u00E1\u00C9\u00E9\u00CD\u00ED\u00D3\u00F3\u00DA\u00FA\u00DD\u00FD" 
    + "\u00C2\u00E2\u00CA\u00EA\u00CE\u00EE\u00D4\u00F4\u00DB\u00FB\u0176\u0177" 
    + "\u00C3\u00E3\u00D5\u00F5\u00D1\u00F1"
    + "\u00C4\u00E4\u00CB\u00EB\u00CF\u00EF\u00D6\u00F6\u00DC\u00FC\u0178\u00FF" 
    + "\u00C5\u00E5"                                                             
    + "\u00C7\u00E7" 
    + "\u0150\u0151\u0170\u0171" 
    ;

    // private constructor, can't be instanciated!
    private AsciiUtils() { }

    // remove accentued from a string and replace with ascii equivalent
    public static String convertNonAscii(String s) {
       if (s == null) return null;
       StringBuilder sb = new StringBuilder();
       int n = s.length();
       for (int i = 0; i < n; i++) {
          char c = s.charAt(i);
          int pos = UNICODE.indexOf(c);
          if (pos > -1){
              sb.append(PLAIN_ASCII.charAt(pos));
          }
          else {
              sb.append(c);
          }
       }
       return sb.toString();
    }

    public static void main(String args[]) {
       String s = 
         "The result : È,É,Ê,Ë,Û,Ù,Ï,Î,À,Â,Ô,è,é,ê,ë,û,ù,ï,î,à,â,ô,ç";
       System.out.println(AsciiUtils.convertNonAscii(s));
       // output : 
       // The result : E,E,E,E,U,U,I,I,A,A,O,e,e,e,e,u,u,i,i,a,a,o,c
    }
}

JDK 1.6 java.text. নর্মালাইজার ক্লাস সরবরাহ করে যা এই কাজের জন্য ব্যবহার করা যেতে পারে।

এখানে একটি উদাহরণ দেখুন


দুর্ভাগ্যক্রমে এটি Æ এর মতো লিগচারগুলি পরিচালনা করবে না Æ
ডোর হাই আর্চ

এই পদ্ধতিটি বিশেষত কার্যকর যদি আপনার ডায়াক্রিটিক্সের ক্লাসগুলি আলাদাভাবে সনাক্তকরণ এবং পরিচালনা করার প্রয়োজন হয় (যেমন, লটেক্সের বিশেষ অক্ষরগুলি থেকে বেরিয়ে আসা)।
vallismortis

4

আপনি ব্যবহার করার চেষ্টা করতে পারেন unidecode, যা রুবি রত্ন হিসাবে এবং সিপিএনে পার্ল মডিউল হিসাবে উপলব্ধ । মূলত, এটি একটি বিশাল সন্ধানের টেবিল হিসাবে কাজ করে, যেখানে প্রতিটি ইউনিকোড কোড পয়েন্ট একটি আসকি চরিত্র বা স্ট্রিংয়ের সাথে সম্পর্কিত।


আপনি এগুলির মধ্যে একটি থেকে লুক টেবিল পেতে সক্ষম হতে পারেন।
ক্যাথি ভ্যান স্টোন

এটি একটি আশ্চর্যজনক প্যাকেজ, তবে এটি চরিত্রের শব্দকে অনুবাদ করে, উদাহরণস্বরূপ এটি "北" কে "বেই" রূপান্তর করে কারণ ম্যান্ডারিনিনে চরিত্রের মতো এটিই হয়। আমি মনে করি প্রশ্নকর্তা গ্লাইফগুলিকে ইংরেজিতে দৃষ্টিগোচর করে তার সাথে রূপান্তর করতে চান।
ডোর হাই আর্চ

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

@ahmetlpbalkan এখানে জাভা জন্য একতামূলক কোড।
জাকুব জিরুতকা

4

আপনি যা চান তা করার কোনও সহজ বা সাধারণ উপায় নেই কারণ এই অক্ষরগুলি যে ল্যাটিন অক্ষরগুলিতে রূপান্তর করতে চান তা দেখতে আপনার দৃষ্টিভঙ্গির মতামত। এগুলি আসলে তাদের নিজস্ব স্বতন্ত্র নাম এবং শব্দের সাথে পৃথক অক্ষর যা অতিমাত্রায় লাতিন বর্ণের মতো দেখায়।

আপনি যদি এই রূপান্তরটি চান, আপনার ল্যাটিন অক্ষরকে ল্যাটিন অক্ষরগুলিতে রূপান্তর করা উচিত বলে মনে করে আপনার নিজের অনুবাদ টেবিল তৈরি করতে হবে।

(আপনি যদি কেবল ছদ্মবেশী চিহ্নগুলি মুছে ফেলতে চান তবে এই থ্রেডের কিছু উত্তর রয়েছে: আমি নেট থেকে একটি ডাইরিট্রিক্স (অ্যাকসেন্ট) কীভাবে সরিয়ে ফেলব? তবে আপনি আরও সাধারণ সমস্যার বর্ণনা দিচ্ছেন)


+1 টি। এখানে 'ডায়াক্রিটিক্স সরান' প্রশ্নের জাভা সংস্করণ রয়েছে: স্ট্যাকওভারফ্লো / প্রশ্নগুলি 10116955/… ; মাইকেল বর্গওয়ার্ট এবং ডিভির উত্তরগুলি দেখুন
জোনিক

4

আমি পার্টিতে দেরি করেছি, তবে আজ এই সমস্যাটির মুখোমুখি হওয়ার পরে আমি এই উত্তরটি খুব ভাল বলে পেয়েছি:

String asciiName = Normalizer.normalize(unicodeName, Normalizer.Form.NFD)
    .replaceAll("[^\\p{ASCII}]", "");

তথ্যসূত্র: https://stackoverflow.com/a/16283863


ছোট সতর্কতা - এটি ইউ +00 ডিএফ ল্যাটিন ছোট ছোট লেটার শপ এস "ß" সরিয়ে দেয়
রাফালমাগ

এবং এছাড়াও bad ... খারাপ।
ক্যাকটাসচিবারে

4

স্বেচ্ছাসেবী ইউনিকোডকে ASCII এ "রূপান্তর" করার সমস্যাটি হ'ল একটি চরিত্রের অর্থ সংস্কৃতি নির্ভর। উদাহরণস্বরূপ, একটি জার্মান-ভাষী ব্যক্তির কাছে "ß" কে "এসএস" তে রূপান্তর করা উচিত যখন একটি ইংরেজী-স্পিকার সম্ভবত এটি "বি" তে রূপান্তরিত করতে পারে।

ইউনিকোডে একই গ্লাইফগুলির জন্য একাধিক কোড পয়েন্ট রয়েছে তা যুক্ত করুন।

আপশটটি হ'ল এটি করার একমাত্র উপায় হ'ল প্রতিটি ইউনিকোড অক্ষর এবং আপনি এটিতে রূপান্তর করতে চান এমন ASCII অক্ষর দিয়ে একটি বিশাল টেবিল তৈরি করুন। আপনি উচ্চারণের অক্ষরকে নরমালাইজেশন ফর্ম KD তে স্বাভাবিক করে একটি শর্টকাট নিতে পারেন, তবে সমস্ত অক্ষর ASCII তে স্বাভাবিক হয় না। এছাড়াও, ইউনিকোড কোনও গ্লাইফের কোন অংশগুলিকে "অ্যাকসেন্ট" বলে নির্ধারণ করে না are

এটি এমন একটি অ্যাপ্লিকেশন থেকে একটি ছোট অংশ এখানে দেওয়া হয়েছে:

switch (c)
{
    case 'A':
    case '\u00C0':  //  À LATIN CAPITAL LETTER A WITH GRAVE
    case '\u00C1':  //  Á LATIN CAPITAL LETTER A WITH ACUTE
    case '\u00C2':  //  Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
    // and so on for about 20 lines...
        return "A";
        break;

    case '\u00C6'://  Æ LATIN CAPITAL LIGATURE AE
        return "AE";
        break;

    // And so on for pages...
}

আমি রাজী. আপনার অ্যাপ্লিকেশন এবং প্রত্যাশিত শ্রোতার জন্য আপনার বিশেষত রূপান্তরগুলির একটি অভিধান তৈরি করা উচিত। উদাহরণস্বরূপ, একটি স্প্যানিশভাষী দর্শকদের জন্য আমি কেবল অনুবাদ করব ÁÉÍÓÚÜÑáéíóúü¿¡
রবার্তো

রবার্তো এখানে কয়েক হাজার অক্ষর রয়েছে এবং আমি এই ম্যানুয়ালটি করতে পারি না।
আহমেটবি - গুগল

2
আপনি কোন মানব ভাষা ব্যবহার করছেন যার "হাজার" অক্ষর রয়েছে? জাপানি? আপনি কী রূপান্তরিত হবেন বলে আশা করবেন??????????
ডোর হাই আর্চ

6
আপনি যে উদাহরণটি দিয়েছেন তা আদর্শ নয়: U + 00DF ল্যাটিন ছোট লেটার শর্ট এস "ß" ইউ + 03 বি 2 গ্রেট ছোট লেটার বিটা "β" এর মতো ইউনিকোড চিঠি নয়।
জোছিম সউর

2

নিম্নলিখিত ক্লাস কৌশলটি করে:

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