আমি ফাইলের শুরু থেকে কীভাবে ï »remove সরিয়ে ফেলব?


145

আমার একটি সিএসএস ফাইল রয়েছে যা আমি জিডিট ব্যবহার করে এটি খুললে সূক্ষ্ম দেখায় , কিন্তু যখন এটি পিএইচপি দ্বারা পড়া হয় (সমস্ত সিএসএস ফাইলকে একত্রে মিশ্রিত করতে), তখন এই সিএসএসের মধ্যে নিম্নলিখিত অক্ষর রয়েছে: ï »¿

পিএইচপি সমস্ত সাদা স্থান সরিয়ে দেয়, তাই কোডের মাঝখানে একটি এলোমেলো the »the পুরো জিনিসটিকে গোলমাল করে। আমি যেমন উল্লেখ করেছি, আমি জিডিট-এ ফাইল খুললে আমি আসলে এই অক্ষরগুলি দেখতে পাচ্ছি না, তাই আমি খুব সহজে এগুলি মুছতে পারি না।

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

যদি এটি সহায়তা করে তবে ফাইলটি ইউটিএফ -8 ফর্ম্যাটে সংরক্ষণ করা হচ্ছে, এবং জিডিট আমাকে এএসও -8859-15 ফর্ম্যাটে সংরক্ষণ করতে দেবে না (নথিতে এক বা একাধিক অক্ষর রয়েছে যা নির্দিষ্ট অক্ষর এনকোডিং ব্যবহার করে এনকোড করা যায় না)। আমি এটি উইন্ডোজ এবং লিনাক্স লাইনের শেষের সাহায্যে সংরক্ষণের চেষ্টা করেছি, তবে কোনওটিই সহায়তা করে নি।


এটি সমস্যার সমাধান হিসাবে উপস্থিত হয়। 95isalive.com/expression/index.html

30
কেউ আমাদের বিওএম থেকে
ছিনিয়ে নিলেন

উত্তর:


150

আপনার জন্য তিনটি শব্দ:

বাইট অর্ডার চিহ্ন (বিওএম)

এটি আইএসও -8859-1-তে ইউটিএফ -8 বিওএমের প্রতিনিধিত্ব। আপনাকে আপনার সম্পাদককে বিওএম ব্যবহার না করার বা তাদের আলাদা করে ফেলার জন্য কোনও আলাদা সম্পাদক ব্যবহার করার কথা বলতে হবে।

বিওএম-এর অপসারণটি স্বয়ংক্রিয় করতে awkআপনি এই প্রশ্নে প্রদর্শিত হিসাবে ব্যবহার করতে পারেন ।

অন্য উত্তরটি যেমন বলেছে , পিএইচপি-র পক্ষে আসলে বিওএমকে সঠিকভাবে ব্যাখ্যা করার জন্য সবচেয়ে ভাল হবে, তার জন্য আপনি এটি ব্যবহার করতে পারেন mb_internal_encoding():

 <?php
   //Storing the previous encoding in case you have some other piece 
   //of code sensitive to encoding and counting on the default value.      
   $previous_encoding = mb_internal_encoding();

   //Set the encoding to UTF-8, so when reading files it ignores the BOM       
   mb_internal_encoding('UTF-8');

   //Process the CSS files...

   //Finally, return to the previous encoding
   mb_internal_encoding($previous_encoding);

   //Rest of the code...
  ?>

হ্যাঁ আমি এটি যখন গুগল করেছিলাম তা খুঁজে পেয়েছি তবে কীভাবে আমি সেগুলি সরিয়ে দেব?
ম্যাট

10
এটি বিওএম সরায় না, এটি এড়িয়ে চলে।
কোল জনসন

অথবা অন্য উপায়ে (উপেক্ষা করুন) এনকোডিং পরিবর্তন হতে পারে।
এমআর 5

উইন্ডোজ নোটপ্যাড (উঘ) এগুলি যুক্ত করে; এই প্রশ্নের ডুপ থেকে পরামর্শটি নোটপ্যাড ++ ব্যবহার করা, যা "বিওএম ছাড়াই ইউটিএফ -8" এনকোডিং হিসাবে সেট করার অনুমতি দেয়। অথবা একটি বাস্তব সম্পাদক ব্যবহার করুন ... (
ইমাস

2
ঠিক এটিই সমস্যা, বিভিন্ন চরিত্রের এনকোডিংগুলি একই অক্ষরগুলির জন্য বিভিন্ন বাইট ব্যবহার করে। উত্তরের তৃতীয় অনুচ্ছেদটি আবার পড়ুন।
ভিনকো ভার্সালভিক

24

আপনার ফাইলটি খুলুন নোটপ্যাড ++ । থেকে এনকোডিং মেনু, নির্বাচন BOM ছাড়া হল UTF-8 রূপান্তর , ফাইলটি সংরক্ষণ করুন এই নতুন ফাইলের সাথে পুরনো ফাইল প্রতিস্থাপন করুন। এবং এটি কার্যকর হবে, নিশ্চিত।


1
নোটপ্যাড ++ v7.6.6 (-৪-বিট) এ আপনাকে রূপান্তর করতে ইউটিএফ -8 এ ক্লিক করতে হবে ।
stomy

23

ইন পিএইচপি , আপনি প্রশ্নে চরিত্র সহ সব অ অক্ষর মুছে ফেলার জন্য নিম্নলিখিত করতে পারেন।

$response = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $response);

1
আপনি যদি "ï" কে হত্যা করতে চান তবে এই $ প্রতিক্রিয়াটি ব্যবহার করুন = প্রিগ_রেপ্লেস ('/ [\ x80- \ xFF] //', '', $ প্রতিক্রিয়া);
গাইড _ _cc.com.com.br_

@ গাইডো_হেনকোল.কম.আর_আর_ আপনি একটি অতিরিক্ত যোগ করুন /, এটি হওয়া উচিত:$response = preg_replace('/[\x80-\xFF]/', '', $response);
এইচ এডি

20

এখানে শেল অ্যাক্সেসযুক্তদের জন্য সর্বজনীন_এইচটিএমএল ডিরেক্টরিতে বিওএম সেটযুক্ত সমস্ত ফাইল সন্ধান করার জন্য একটি সামান্য আদেশ রয়েছে - এটি আপনার সার্ভারের সঠিক পথটি কী তা পরিবর্তন করতে ভুলবেন না

কোড:

grep -rl $'\xEF\xBB\xBF' /home/username/public_html

এবং আপনি যদি ভিআই সম্পাদকের সাথে স্বাচ্ছন্দ্য বোধ করেন তবে ফাইলটি vi তে খুলুন:

vi /path-to-file-name/file.php

এবং বিওএম সরানোর জন্য কমান্ডটি প্রবেশ করুন:

set nobomb

ফাইলটি সংরক্ষণ করুন:

wq

1
grep -rlI $'\xEF\xBB\xBF' .বাইনারি ফাইল উপেক্ষা করতে ব্যবহার করুন ।
নবী KAZ

11

বিওএম হ'ল অক্ষরের একটি অনুক্রম (T ইএফ for বিবি $ বিএফএফ -8 এর জন্য ইউটিএফ -8), সুতরাং কেবল স্ক্রিপ্ট ব্যবহার করে এগুলি সরিয়ে ফেলুন বা সম্পাদকটি কনফিগার করুন যাতে এটি যুক্ত না হয়।

থেকে হল UTF-8 থেকে BOM সরানো হচ্ছে :

#!/usr/bin/perl
@file=<>;
$file[0] =~ s/^\xEF\xBB\xBF//;
print(@file);

আমি নিশ্চিত এটি পিএইচপি সহজেই অনুবাদ করে।


6
নোট করুন যে বিওএম অক্ষরগুলির ক্রম নয়, এটি একটি একক অক্ষর। ফাইলটি ইউটিএফ -8 এ থাকলে অক্ষরটি তিনটি বাইটে উপস্থাপিত হয় । যদি ফাইলটি ইউটিএফ -8 এ থাকে, তবে এটি অন্য এনকোডিংয়ে দেখানো (অর্থাত্, যেখানে বিওএম থাকা উচিত সেখানে ইফ বিবি বিএফ উপস্থিত হয়) একটি ত্রুটি। কোনও ইউটিএফ -8 ফাইল থেকে বিওএম অপসারণ করতে একজনকে (একক) চার্টার ইউ + এফএফএফ অপসারণ করা উচিত। হ্যাঁ, পেডেন্ট্রি!
জেফরি এল হুইলেটজ

1
আমি পিএইচপি-তে এটি কাজ করতে পারিনি (এটি কেবলমাত্র আমার অক্ষমতা, আপনার নয়: পি), তাই বিওএম আছে কিনা তা দেখার জন্য আমি একটি পরীক্ষা করেছিলাম এবং প্রথম 3 টি অক্ষর মুছে ফেলি। কোডটি এখানে যদি কারওর প্রয়োজন হয় তবে: }
ম্যাট

7
এটি পিএইচপি হিসাবে অনুবাদ করে $string = preg_replace('/\x{EF}\x{BB}\x{BF}/','',$string);। আপনি এটি ব্যবহার করার আগে, আপনি যদি পরিবর্তে উত্সটিতে সমস্যাটি ঠিক করতে না পারেন তবে পুনর্বিবেচনা করুন।
কমনপাইক

6

আমার জন্য, এটি কাজ করেছে:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

আমি যদি এই মেটাটি সরিয়ে ফেলি তবে ï »again আবার উপস্থিত হবে। আশা করি এটি কাউকে সহায়তা করবে ...


5

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

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


3

তুমি ব্যবহার করতে পার

vim -e -c 'argdo set fileencoding=utf-8|set encoding=utf-8| set nobomb| wq'

অ্যাজকের সাথে প্রতিস্থাপন করা দেখে মনে হচ্ছে এটি কাজ করে তবে এটি স্থানে নেই।


2

grep -rl $ '\ xEF \ xBB \ xBF' * | xargs vim -e -c 'argdo set fileencoding = utf-8 | সেট এনকোডিং = utf-8 | সেট nobomb | wq লিখে '


grep -rlI $'\xEF\xBB\xBF' .বাইনারি ফাইল উপেক্ষা করতে ব্যবহার করুন । এবং এখানে আরও .ভাল *
নবি KAZ

2

আমার কিছু পিএইচপি ফাইলগুলিতে বিওএম উপস্থিত হওয়ার সাথে আমার একই সমস্যা ছিল (in »¿ï» ¿)।

আপনি যদি পিএইচপিস্টোরম ব্যবহার করেন তবে আপনি সেটিংস -> আইডিই সেটিংস -> কীম্যাপ -> প্রধান মেনু -> ফাইল -> বিওএম সরান এটিকে হটকিতে সেট করতে পারেন।


2

নোটপ্যাড ++ এ, "এনকোডিং" মেনুটি নির্বাচন করুন, তারপরে "বিওএম ছাড়াই ইউটিএফ -8 এ এনকোড করুন"। তারপরে সেভ করুন।

স্ট্যাক ওভারফ্লো প্রশ্ন দেখুন কীভাবে বিওএম ছাড়াই ইউটিএফ -8 এ পাঠ্য সংরক্ষণ করতে নোটপ্যাড তৈরি করবেন?


2

নোটপ্যাড ++ এ প্রশ্নের অধীনে পিএইচপি ফাইলটি খুলুন।

শীর্ষে এনকোডিং-এ ক্লিক করুন এবং "বিওএম ছাড়াই ইউটিএফ -8 এ এনকোডিং" থেকে "ইউটিএফ -8 এ এনকোডিং" এ পরিবর্তন করুন। আপনার সার্ভারে ফাইলটি সংরক্ষণ এবং ওভাররাইট করুন।


1

একই সমস্যা, বিভিন্ন সমাধান।

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

# Original
$xml_string = "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;";

# fixed
$xml_string = "<" . "?xml version=\"1.0\" encoding=\"UTF-8\"?" . ">";

1

আপনি যদি ইউটিএফ -8 এনকোডযুক্ত ফাইলগুলি থেকে বিওএমটি সরিয়ে ফেলতে সক্ষম হন তবে আপনার প্রথমে তাদের সম্পর্কে সচেতন এমন কোনও সম্পাদককে ধরে রাখা উচিত।

আমি ব্যক্তিগতভাবে ই টেক্সট সম্পাদক ব্যবহার করি ।

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

Alt পাঠ্য http://oth4.com/encoding.png

ই নিখরচায় নয়, তবে একটি নিখরচায় পরীক্ষা রয়েছে এবং এটি একটি দুর্দান্ত সম্পাদক (সীমাবদ্ধ টেক্সটমেট সামঞ্জস্য)।


1
ছবির লিঙ্কটি নষ্ট হয়ে গেছে।
পিটার মর্টেনসেন

1

আপনি দ্বারা এটি খুলতে পারে PhpStorm এবং আপনার ফাইলে ডান ক্লিক করুন এবং এর উপর ক্লিক সরান BOM ...


1

বিওএম নিয়ে সমস্যাটির আরও একটি ভাল সমাধান এখানে। এটি দুটি ভিবিএস স্ক্রিপ্ট (.vbs) স্ক্রিপ্ট।

একটি ফাইলে বিওএম সন্ধানের জন্য একটি এবং ফাইলটিতে জালিয়াতিপূর্ণ বিওএমকে হত্যা করার জন্য একটি। এটি বেশ সুন্দর কাজ করে এবং ব্যবহার করা সহজ to

কেবলমাত্র একটি .vbs ফাইল তৈরি করুন এবং এতে নিম্নলিখিত কোডটি আটকে দিন।

সন্দেহজনক ফাইলটি .vbs ফাইলে টেনে এনে ফেলে আপনি VBScript স্ক্রিপ্টটি ব্যবহার করতে পারেন। এটি আপনাকে বলবে যে কোনও বিওএম আছে কি না।

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' find_BOM.vbs
' ====================
' Kleines Hilfsmittel, welches das BOM finden soll
'
 Const UTF8_BOM = ""
 Const UTF16BE_BOM = "þÿ"
 Const UTF16LE_BOM = "ÿþ"
 Const ForReading = 1
 Const ForWriting = 2
 Dim fso
 Set fso = WScript.CreateObject("Scripting.FileSystemObject")
 Dim f
 f = WScript.Arguments.Item(0)
 Dim t
 t = fso.OpenTextFile(f, ForReading).ReadAll
 If Left(t, 3) = UTF8_BOM Then
     MsgBox "UTF-8-BOM detected!"
 ElseIf Left(t, 2) = UTF16BE_BOM Then
     MsgBox "UTF-16-BOM (Big Endian) detected!"
 ElseIf Left(t, 2) = UTF16LE_BOM Then
     MsgBox "UTF-16-BOM (Little Endian) detected!"
 Else
     MsgBox "No BOM detected!"
 End If

যদি এটি আপনাকে বিওএম বলে দেয়, তবে নীচের কোডটি সহ দ্বিতীয় .vbs ফাইলটি তৈরি করুন এবং সন্দেহজনক ফাইলটিকে .vbs ফাইলে টেনে আনুন।

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' kill_BOM.vbs
' ====================
' Kleines Hilfmittel, welches das gefundene BOM löschen soll
'
Const UTF8_BOM = ""
Const ForReading = 1
Const ForWriting = 2
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim f
f = WScript.Arguments.Item(0)
Dim t
t = fso.OpenTextFile(f, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
    fso.OpenTextFile(f, ForWriting).Write (Mid(t, 4))
    MsgBox "BOM gelöscht!"
Else
    MsgBox "Kein UTF-8-BOM vorhanden!"
End If

কোডটি হাইকো জেন্ডারেকের


1

পিএইচপিএসটারমে, একাধিক ফাইল এবং বিওএমের জন্য অগত্যা ফাইলের শুরুতে আপনি অনুসন্ধান করতে পারেন \x{FEFF}(নিয়মিত প্রকাশ) এবং কিছুই না দিয়ে প্রতিস্থাপন করতে পারেন ।


0

একই সমস্যা, তবে এটি কেবল একটি ফাইলকেই প্রভাবিত করেছিল তাই আমি কেবল একটি ফাঁকা ফাইল তৈরি করেছি, কোডটি অনুলিপি / নতুন ফাইলটিতে পেস্ট করেছি এবং তারপরে মূল ফাইলটি প্রতিস্থাপন করেছি। অভিনব নয় তবে এটি কাজ করেছে।


0

সমস্ত বোমড ফাইল অনুসন্ধান করার জন্য মোট কমান্ডার ব্যবহার করুন :

বিওএম সহ ইউটিএফ -8 ফাইলগুলি সন্ধানের মার্জিত উপায়?

  • এই ফাইলগুলি Eclipse এর মতো কিছু উপযুক্ত সম্পাদকে (যা বিওএমকে স্বীকৃতি দেয়) খুলুন ।

  • ফাইলের এনকোডিং আইএসও-তে পরিবর্তন করুন (ডান ক্লিক করুন, বৈশিষ্ট্যগুলি)।

  • ফাইলটির শুরু থেকে ï »Cut কেটে সংরক্ষণ করুন

  • ফাইলটির এনকোডিংটি ইউটিএফ -8 এ ফিরে যান

... এবং আবার এন ... ডি ব্যবহার সম্পর্কে ভাবেন না!


0

আমারও একই সমস্যা ছিল। সমস্যাটি ছিল কারণ আমার একটি পিএইচপি ফাইলটি utf-8 এ ছিল (সবচেয়ে গুরুত্বপূর্ণ, কনফিগারেশন ফাইল যা সমস্ত পিএইচপি ফাইলের অন্তর্ভুক্ত)।

আমার ক্ষেত্রে, আমার কাছে 2 টি আলাদা সমাধান ছিল যা আমার পক্ষে কাজ করেছিল:

প্রথমে, কনফিগারেশন ফাইলগুলিতে (অথবা .htaccess) অ্যাডডেফল্টচার্টসাইড ডিরেক্টরি ব্যবহার করে আমি অ্যাপাচি কনফিগারেশন পরিবর্তন করেছি। এই সমাধানটি অ্যাপাচিকে সঠিক এনকোডেজ ব্যবহার করতে বাধ্য করে।

AddDefaultCharset ISO-8859-1

দ্বিতীয় সমাধানটি ছিল পিএইচপি ফাইলের খারাপ এনকোডিংটি পরিবর্তন করা।


0
  1. আপনার filename.css ফাইলের পাঠ্যটি অনুলিপি করুন।
  2. আপনার সিএসএস ফাইলটি বন্ধ করুন।
  3. কোনও ফাইল নাম সংঘর্ষ এড়াতে এটি ফাইলের নাম 2.css নামকরণ করুন।
  4. এমএস নোটপ্যাড বা ওয়ার্ডপ্যাডে একটি নতুন ফাইল তৈরি করুন।
  5. এটিতে টেক্সট আটকান।
  6. এনকোডিং বিকল্পগুলি থেকে UTF-8 নির্বাচন করে এটি ফাইলের নাম। CSS হিসাবে সংরক্ষণ করুন।
  7. Filename.css আপলোড করুন।

-3

আপনার পরীক্ষা করুন index.php, "... charset=iso-8859-1" এবং এটি "... " দিয়ে প্রতিস্থাপন করুন charset=utf-8

এটা কাজ করবে।

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