Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c'de Turkce Karakterler


riglous

Öne çıkan mesajlar

Diyelimki elimizde bir dosya var. Dosyanin adi "müslüm" ancak bu bizim sistemimizde (Ubuntu) "m?sl?m" olarak gozukuyor.

Ben bunu 'ü'leri nasil replace ederim?
Ilk asamada variable bazinda olsa da olur, daha sonrasini ben ayarlarim ayarlamasina.


#! /usr/bin/env python
#-*- coding: windows-1254 -*-
from string import find, replace
import locale
import os
locale.setlocale(locale.LC_ALL,"")

def s_print(str):
return unicode(str, 'windows-1254')

for x in os.listdir('/home/bgulcu/Desktop/tmp'):
print s_print(x.replace('ü','u'))


seklinde bir girisimim de oldu ancak basarili olamadim. Sorun su ki, benim elle girdigim 'ü' aslinda dosyanin isminde olan 'ü' degil. Peki ben dosyanin isminde olan harfi nasil tanimlayacagim? c'de bu is nasil yapiliyor?

Zaman ayirdiginiz icin tesekkurler.
Link to comment
Sosyal ağlarda paylaş

dosya isimleri icin locale'ine o karakteri barindiran 'codepage' eklemen lazim. orn;

sinan@sosaria:~/Ubicom/distro$ sudo dpkg-reconfigure locales
Generating locales...
en_AU.UTF-8... up-to-date
en_BW.UTF-8... up-to-date
en_CA.UTF-8... up-to-date
en_DK.UTF-8... up-to-date
en_GB.UTF-8... up-to-date
en_HK.UTF-8... up-to-date
en_IE.UTF-8... up-to-date
en_IN.UTF-8... up-to-date
en_NG.UTF-8... up-to-date
en_NZ.UTF-8... up-to-date
en_PH.UTF-8... up-to-date
en_SG.UTF-8... up-to-date
en_US.UTF-8... up-to-date
en_ZA.UTF-8... up-to-date
en_ZW.UTF-8... up-to-date
tr_CY.UTF-8... done
tr_TR.UTF-8... done
Generation complete.

C de widechar, unicode kullanabilirsin.
Python scriptindede regular expression kullanmani tavsiye ederim duzeltmen icin, '?' isareti olmus haliyle character decode/encode edemezsin zaten.
Link to comment
Sosyal ağlarda paylaş

Ilgilendigin icin tesekkur ederim ancak pek bir ise yaramadi. Yani locale falan onlari zaten denemistim.

Yalniz sorunu cozdum. Soyle ki daha basit bir yontem kullandim...


for x in os.listdir('/home/bgulcu/Desktop/tmp'):
rename=0
y=''
for m in x:
if ord(m)==252:
rename=1
y+='u'
else:
y+=m
if rename==1:
print s_print(x)
print y
os.system('mv "'+x+'" "'+y+'"')

Basima bela olan sadece 'ü' oldugu icin 252 isimi gordu. Zaten sorun aletin 128'de calismasiydi.. Her neyse, ileride birilerinin ihtiyaci olursa, ord() kullansinlar.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...