2012-06-05 9 views
8

ऐसा लगता है कि यहअपरकेस यूनिकोड के लिए रेगेक्स "Ó" से मेल नहीं खाता है?

#!/usr/bin/env perl 
use strict; 
use warnings; 
use 5.14.0; 
use utf8; 
use feature 'unicode_strings'; 

" SIMÓN " =~ /^\s+(\p{Upper}+)/u; 
print "$1\n"; 

रिटर्न

SIM 

अपरकेस के रूप में उच्चारण Ó को नहीं पहचानता है पर्ल यूनिकोड डेटा है, जो पहले से ही बड़े रूप में Ó टैग का उपयोग करने में सक्षम होना चाहिए। Emacs describe-char

character code properties: customize what to show 
    name: LATIN CAPITAL LETTER O WITH ACUTE 
    old-name: LATIN CAPITAL LETTER O ACUTE 
    general-category: Lu (Letter, Uppercase) 
    decomposition: (79 769) ('O' '́') 
+0

मुझे नहीं पता कि आप प्रदान किए गए _more_ न्यूनतम मामले को कैसे प्राप्त कर सकते हैं :-) – paxdiablo

+1

आह, मेरी माफी, @pst। मैं केवल सामग्री की बजाय लाइन _count_ को देख रहा था। आप सही हैं कि आरई स्वयं को सरल बनाया जा सकता है। – paxdiablo

उत्तर

10

आप use open ':std', ':locale'; भूल रहे हैं ठीक से अपने उत्पादन एन्कोड करने के लिए से।

यदि यह काम नहीं करता है, तो आपकी फ़ाइल यूटीएफ -8 का उपयोग करके एन्कोड नहीं की गई है, भले ही आप पर्ल को बताएं।

+1

यह काम किया! मुझे बिल्कुल समझ में नहीं आ रहा है, क्योंकि मेरा उदाहरण केवल एक स्ट्रिंग का उपयोग करता है, न कि फ़ाइल ... मुझे लगता है कि जब मैं 'प्रिंट $ 1' – user525602

+1

बिल्कुल सही करता हूं तो मुझे कुछ बोर्क किया जाता है। ': std' स्ट्रिंग को STDOUT और STDERR को एन्कोड करने के लिए भेजा जाता है, और एसटीडीआईएन से बाइट को डीकोड किया जाता है। – ikegami

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