2011-08-31 17 views
52

मेरे पास एक वेबसाइट है, और मैं अपने तुर्की वर्णों को फ़ायरफ़ॉक्स में jQuery के साथ भेज सकता हूं, लेकिन इंटरनेट एक्सप्लोरर मेरे तुर्की वर्ण नहीं भेजता है। मैंने नोटपैड में अपनी स्रोत फ़ाइल को देखा, और यह फ़ाइल का कोड पृष्ठ एएनएसआई है।मैं एएनएसआई एन्कोडेड फ़ाइल को नोटपैड ++ के साथ यूटीएफ -8 में कैसे परिवर्तित करूं?

जब मैं इसे बिना बीओएम के यूटीएफ -8 में परिवर्तित करता हूं और फ़ाइल बंद करता हूं, तो फ़ाइल फिर से खोलने पर फ़ाइल एएनएसआई फिर से होती है।

मैं अपनी फ़ाइल को एएनएसआई से यूटीएफ -8 में कैसे परिवर्तित कर सकता हूं?

+1

आप उपकरण मैं उस के लिए लिखा था का उपयोग कर सकते , मुझे भी एक ही समस्या का सामना करना पड़ा और अपना रास्ता बना दिया। https://github.com/srcnalt/ANSI-to-UTF8 – Sarge

उत्तर

60

इस हिस्से के बारे में:

जब मैं यह UTF-8 में बदलने का bom और करीब फ़ाइल के बिना, फ़ाइल को पुन: एएनएसआई जब मैं फिर से खोलना है।

सबसे आसान समाधान पूरी तरह से नोटपैड ++ को कॉन्फ़िगर करके समस्या से बचने के लिए है।

Settings प्रयास करें ->Preferences ->New document ->Encoding -> बीओएम बिना UTF-8 चुनते हैं, और Apply to opened ANSI files की जाँच करें।

इस तरह सभी खुले एएनएसआई फ़ाइलों को बीओएम के बिना यूटीएफ -8 के रूप में माना जाएगा।

विवरण के लिए क्या, क्या हो रहा है इस सवाल का जवाब नीचे टिप्पणी पढ़ें।

यूनिकोड और यूटीएफ -8 के बारे में पूरी तरह से जानने के लिए, जोएल स्पॉल्स्की से this excellent article पढ़ें।

+0

इससे मुझे बहुत मदद मिली। धन्यवाद। हालांकि मैं व्यवहार को समझ नहीं पा रहा हूं। क्योंकि मैं एक मौजूदा फाइल खोलता हूं और एक नया नहीं। –

+1

'खोले गए एएनएसआई फाइलों पर लागू करें' आपकी स्थिति में प्रासंगिक है: जब आपके पास एक फ़ाइल है जिसमें केवल सादा ASCII वर्ण (उच्चारण के बिना) शामिल हैं, और आपके पास फ़ाइल की शुरुआत में बीओएम नहीं है, तो संपादक डिफ़ॉल्ट रूप से इसे एएनएसआई फ़ाइल के रूप में मानता है, क्योंकि इस फ़ाइल में कुछ भी नहीं है यह इंगित करने के लिए कि आप इलाज करना चाहते हैं वह एक यूटीएफ -8 फ़ाइल है। हालांकि, जब आप कहते हैं, 'ओ' और इसे यूटीएफ -8 डब्ल्यू/ओ बीओएम के रूप में सहेजें, भले ही फ़ाइल की शुरुआत में कोई बीओएम न हो, फिर भी 'ओ' के पीछे दो बाइट कॉम्बो की उपस्थिति से (0xC396 मामला) संपादक सीखता है "यह यूटीएफ -8 होना चाहिए"। –

+2

दूसरे शब्दों में, जब आप एएनएसआई सादे फ़ाइल को यूटीएफ -8 के रूप में सहेजते हैं, तो आउटपुट समान होता है क्योंकि आप इसे एएनएसआई के रूप में सहेजते थे। जब आप इसे खोलते हैं तो आपको संपादक को * इसे इलाज * यूटीएफ -8 के रूप में बताना होगा। * बी * यूटीएफ -8 के लिए फ़ाइल के लिए, इसे या तो बीओएम से शुरू करना है, या इसमें दो-बाइट अनुक्रम शामिल हैं। जब आप किसी एएनएसआई फ़ाइल में 'Ö' इनपुट करते हैं तो संपादक का व्यवहार कॉन्फ़िगरेशन निर्भर होता है। –

13

आप गैर- ASCII वर्ण (कोड पॉइंट्स 128 और उससे अधिक) आपकी फ़ाइल में नहीं है, तो UTF-8 बीओएम बिना ASCII, बाइट के लिए बाइट के रूप में एक ही है - तो Notepad ++ गलत लगता है कि होगा।

AJAX प्रतिक्रिया की सेवा करते समय वर्ण एन्कोडिंग निर्दिष्ट करने के लिए आपको क्या करना है - उदा। पीएचपी साथ, आप यह करते हैं चाहते हैं:

header('Content-Type: application/json; charset=utf-8'); 

महत्वपूर्ण हिस्सा हर जे एस प्रतिक्रिया के साथ अक्षरसेट निर्दिष्ट है - और IE उपयोगकर्ता के सिस्टम डिफ़ॉल्ट एन्कोडिंग है, जो गलत समय के सबसे अधिक है करना प्रारंभ कर देगा।

+0

यह स्वीकृत उत्तर क्यों नहीं है? यह एकमात्र उत्तर है जो बताता है कि क्या हो रहा है, और सवाल का वास्तविक समाधान क्या है। – SinistraD

39

शायद यह आपके लिए आवश्यक उत्तर नहीं है, लेकिन मुझे इसी तरह की समस्या का सामना करना पड़ा, इसलिए मैंने इसे यहां रखने का फैसला किया।

मुझे 500 xml फ़ाइलों को यूटएफ 8 में नोटपैड ++ के माध्यम से परिवर्तित करने की आवश्यकता है। नोटपैड ++ क्यों? जब मैंने "यूटीएफ 8 में एनकोड" विकल्प का उपयोग किया (कई अन्य कन्वर्टर्स एक ही तर्क का उपयोग करते हैं) तो यह सभी विशेष पात्रों को गड़बड़ कर देता है, इसलिए मुझे स्पष्ट रूप से "यूटीएफ 8 में कनवर्ट करें" का उपयोग करना पड़ा।


विशेष वर्ण के साथ खिलवाड़ के बिना नोटपैड के माध्यम से ++ एकाधिक फ़ाइलों को परिवर्तित करने के लिए कुछ सरल कदम यहाँ (पूर्व के लिए। विशेषक अंक)।

  1. भागो Notepad ++ और उसके बाद खुला मेनू Plugins-> प्लगइन प्रबंधक> दिखाएँ प्लगइन प्रबंधक
  2. स्थापित अजगर स्क्रिप्ट। प्लगइन स्थापित होने पर, एप्लिकेशन को पुनरारंभ करें।
  3. मेनू चुनें प्लगइन्स-> पायथन स्क्रिप्ट-> नई स्क्रिप्ट
  4. इसके नाम चुनें, और फिर अतीत निम्नलिखित कोड:

convertToUTF8.py

import os 
import sys 
from Npp import notepad # import it first! 

filePathSrc="C:\\Users\\" # Path to the folder with files to convert 
for root, dirs, files in os.walk(filePathSrc): 
    for fn in files: 
     if fn[-4:] == '.xml': # Specify type of the files 
      notepad.open(root + "\\" + fn)  
      notepad.runMenuCommand("Encoding", "Convert to UTF-8") 
      # notepad.save() 
      # if you try to save/replace the file, an annoying confirmation window would popup. 
      notepad.saveAs("{}{}".format(fn[:-4], '_utf8.xml')) 
      notepad.close() 

सब के बाद, स्क्रिप्ट चलाने

+2

ग्रेट समाधान। चूंकि मैं नोटपैड ++ स्थानीयकरण का उपयोग करता हूं, इसलिए मुझे 'एन्कोडिंग' और 'यूटीएफ -8 में कनवर्ट करें' विकल्प का अनुवाद करना पड़ता है, अजीब। – Piotr

+0

मुझे आश्चर्य है कि पायथन स्क्रिप्ट कैसे चलाएं? मैं इसे कमांड लाइन में चलाता हूं और यह कहता है कि नोटपैड नहीं मिला। – flexwang

+2

हाय फ्लेक्सवांग, आपको इसे नोटपैड ++ –

संबंधित मुद्दे