2012-06-05 29 views
8

Dường như nó không nhận ra Ó có dấu như hoaRegex cho chữ viết hoa Unicode không khớp với "Ó"?

#!/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"; 

lợi nhuận

SIM 

Perl sẽ có thể sử dụng dữ liệu Unicode, mà đã thẻ Ó như hoa. Từ 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

Tôi không thấy cách bạn có thể nhận được trường hợp tối thiểu _more_ so với những gì được cung cấp :-) – paxdiablo

+1

Ah, lời xin lỗi của tôi, @pst. Tôi chỉ thực sự nhìn vào dòng _count_ chứ không phải là nội dung. Bạn đúng rằng bản thân RE có thể được đơn giản hóa. – paxdiablo

Trả lời

10

Bạn đang thiếu use open ':std', ':locale'; mã hóa phù hợp đầu ra của bạn.

Nếu điều đó không có tác dụng, tệp của bạn không được mã hóa bằng UTF-8 mặc dù bạn cho Perl biết.

+1

Đã hoạt động! Tôi không hiểu chút nào, vì ví dụ của tôi chỉ sử dụng một chuỗi chứ không phải một tệp ... Tôi đoán có điều gì đó bị bẻ khóa khi tôi làm 'in $ 1' – user525602

+1

Chính xác. ': std' khiến các chuỗi được gửi tới STDOUT và STDERR được mã hóa và các byte từ STDIN được giải mã. – ikegami

Các vấn đề liên quan