রেল এবং রুবি ১.৯ সহ অবৈধ মাল্টিবাইট চর (মার্কিন-এএসসিআইআই)


197

আমি রুবেল 1.9.1 ব্যবহার করছি রেল ২.৩.৪ সহ আমার অ্যাপ্লিকেশনটি পাঠ্য ইনপুট হ্যান্ডেল করা

যদি আমি এর মতো কিছু চেষ্টা করি (অভ্যন্তরের উদ্ধৃতি চিহ্নগুলি অন্যরকম দেখাচ্ছে)

text = "”“"

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

#<SyntaxError: /Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: syntax error, unexpected $end, expecting keyword_end

ব্যবহারকারীরা সেগুলিকে ইনপুট দিতে পারে বলে আমার সেই উদ্ধৃতি চিহ্নগুলি ব্যবহার করা দরকার এবং এর জন্য আমাকে অ্যাকাউন্ট করতে হবে?

কোন ধারনা?


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

উত্তর:


691

আপনি যেখানে স্ক্রিপ্টে নন-এএসসিআইআই অক্ষর ব্যবহার করেছেন সেখানে কোনও যাদু মন্তব্য যুক্ত করার চেষ্টা করেছেন? এটি স্ক্রিপ্টের উপরে যেতে হবে।

#!/bin/env ruby
# encoding: utf-8

এটি আমার জন্য কবজির মতো কাজ করেছিল।


2
হুম ......... ফাইলটির শীর্ষে যোগ করেছেন তবে এখনও একই ত্রুটি বার্তা পান get কোনও পরামর্শ?
আর্টেম কালিনচুক

8
কেন্দ্রীয় ব্যাখ্যা @ ডেলিওনস লিঙ্ক করা নিবন্ধে পাওয়া যাবে: উত্স ফাইলগুলি একটি মার্কিন-এএসসিআইআই এনকোডিং গ্রহণ করে, আপনি অন্যথায় না বললে। যদি আপনি সোর্স এনকোডিংটি পরিবর্তন না করে কোনও স্ট্রিং আক্ষরিকের মধ্যে নন-এএসসিআইআই সামগ্রী রাখেন তবে রুবি সেই ত্রুটির সাথে মারা যাবে। ধন্যবাদ ছেলেরা, অবশেষে আমি এটি পেয়েছি :-)
বাস-টি

2
#!/bin/env rubyযদি না আপনি এক্সিকিউটেবল হিসাবে কমান্ড লাইন থেকে স্ক্রিপ্টটি চালাচ্ছেন তবে প্রয়োজনীয় নয়। # encodingলাইন নিজে কাজ করে।
Gak

10
# encoding: utf-8। এটি 2013 এর শেষ হয়েছে এবং আমাদের এখনও এই গেমটি খেলতে হবে। ফোন ধরুন, ফোন বেজে উঠছে ... এটি 20৩৩ ছিল, তারা এখনও তা এটি বাজানোর জন্য ডেকেছিল। ওহ ভাল, 2010 সাল থেকে
জেরেক জমুডজিনস্কি

1
@gotqn - দয়া করে এখানে একই নিবন্ধটি আবিষ্কার করুন - গ্রেসোফটিকনস্
অলোক সোয়েন

43

আপনি যদি কোনও প্রকল্পের সমস্ত উত্স ফাইলগুলিতে সহজেই যাদু মন্তব্য যুক্ত করতে চান তবে আপনি magic_encodingরত্নটি ব্যবহার করতে পারেন

sudo gem install magic_encoding

তারপরে magic_encodingআপনার অ্যাপ্লিকেশনটির মূল থেকে কেবল টার্মিনালে কল করুন।


আমি এই ধরণের বিশদটি মনে রাখা জরুরী মনে করি, তাই আমি # এনকোডিং লেখার কমপক্ষে কয়েক মাসের জন্য সেই রত্নটি ব্যবহার করব না: utf-8 ম্যানুয়ালি।
মার্সেল ভালদেজ ওরোজকো

রেল ২.৩ এবং রবি ১.৯-তে রত্নখচিত করতে 'রত্ন ম্যাজিক_এনকোডিং' যুক্ত করা হয়েছে
এলমোর

এটি শসা পরীক্ষার সাথে সংহত করে না।
ট্রিপ

1
@ ইলমোর আপনার প্রকল্পের জেমফাইলে কখনও বাহ্যিক লাইব্রেরি রাখা উচিত নয়। magic_encodingপ্রকল্পের নির্ভরতা নয়, কেবল একটি কমান্ড-লাইন সরঞ্জাম।
এখনকার

17

আমি কেবল আমার সমাধানটি যুক্ত করতে চাই:

আমি জার্মান উমলাটগুলি ö, ü, like এর মতো ব্যবহার করি এবং একই ত্রুটি পেয়েছি।
@ জেরেক জমুডজিনস্কি কেবল আপনাকে কীভাবে এটি কাজ করে তা বলেছিল, তবে এখানে আমার:

আপনার কন্ট্রোলারের শীর্ষে এই কোডটি যুক্ত করুন: # encoding: UTF-8
(উদাহরণস্বরূপ umlauts সহ ফ্ল্যাশ বার্তা ব্যবহার করার জন্য)

আমার নিয়ামকের উদাহরণ:

# encoding: UTF-8
class UserController < ApplicationController

এখন আপনি ö, ä, ü, ß, "" ইত্যাদি ব্যবহার করতে পারেন


8

এই তীর্যক ডাবল উদ্ধৃতিগুলি ASCII অক্ষর নয়। ত্রুটি বার্তাটি তাদের 'মাল্টি-বাইট' হওয়ার বিষয়ে বিভ্রান্ত করছে।


2
কেন এটি বিভ্রান্তিকর? তারা হয় multibyte অক্ষর।
ম্যাথু শার্লে

4
কারণ ASCII কোনও মাল্টি-বাইট এনকোডিংগুলি সংজ্ঞায়িত করে না। যেমনটি ASCII সম্পর্কিত, সেগুলি জঘন্য, এটি সম্পর্কিত এনকোডিংয়ে বৈধ বলে মনে হয়।
ফিল মিলার

8

কেবল একটি নোট যে রুবি ২.০ হিসাবে যুক্ত করার দরকার নেই # encoding: utf-8। ইউটিএফ -8 স্বয়ংক্রিয়ভাবে সনাক্ত করা হয়েছে।


7

এটি আমার পক্ষে কাজ করেছে:

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