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


Öne çıkan mesajlar

Mesaj tarihi:
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.
Mesaj tarihi:
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.
Mesaj tarihi:
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.
Mesaj tarihi:
Simdi ben dogrudan Turkce karakter yazarak rename edersem zaten sorun yasamiyorum. Sorun halihazirda windowsta Turkce isim almis dosyalarda. Isin komik tarafi ssh'la nasil alabildim ben ona hayret ediyorum...
×
×
  • Yeni Oluştur...