Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Java / JSP

Cevapla
 
LinkBack Seçenekler
Eski 19/12/2006, 22:08   #1 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan Çok amatörce

Arkadaşlar çok amatörce bir sorum olacak ama daha önce hiç java kullanmadım ve şu an başka şansım olmadığı için bunu sormak zorundayım.

Bir java uygulamasında charset nasıl değiştiriliyor?

mesela bir metin var ve onun charset'ini nasıl değiştirebilirim? Daha doğrusu java uygulamasının türkçe karakterleri desteklemesini nasıl sağlayabilirim? İsteyenlere dosyayı da gönderebilirim. Çoklu mail gönderme programı fakat mailleri ISO-...-1 kodunda gönderiyor ben ise Türkçe destekli olmasını istiyorum.

Kod:
http://doc.java.sun.com/DocWeb/api/java.nio.charset.Charset
burada bir örnek buldum ama hiçbirşey anlamadım

Bunları soylerken hiçbir şekilde java bilgimin olmadığını gözönünde bulundurursanız sevinirim...


Teşekkürler, cevaplarınızı bekleyeceğim...
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 19:55   #2 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Bunun nio ile alakası yok. Mail gönderimi yaparken kullandığın sınıfların encoding desteği ile alakalı.

Kodunu gösterirsen (sadece gerekli parçaları tabi) yardımcı olunabilir.
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:07   #3 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

Kod:

publicString prepareSending(String subject, String htmlFileName, boolean embedImages,
String from, String fromName, Set<String> attachements, String mailserver,
boolean detectCorrectHTMLBug, boolean forceCorrectHTMLBug)
{
try {
Properties props = newProperties();
props.put("mail.smtp.host", mailserver);

boolean debug = false;
mSession = Session.getDefaultInstance(props, null);
mSession.setDebug(debug);
mTransport = mSession.getTransport(new URLName("smtp://" + mailserver));

// message and header
message = new MimeMessage(mSession);
InternetAddress addressFrom = new InternetAddress(from , fromName);
message.setFrom(addressFrom);

message.addHeader(XMAILER, mMailer);
message.addHeader(XMAILERVERSION, mVersion);
message.setSubject(subject);

// multipart :
if (!embedImages) { // without embedded images
Multipart multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
String msgText = FileToString.convert(newFile(htmlFileName));
messageBodyPart.setContent(msgText , CONTENT_TYPE);
multipart.addBodyPart(messageBodyPart);
addAttachements(attachements, multipart);
message.setContent(multipart);
} else { // with embedded images
Multipart multipart = null;
if (attachements.size() > 0) {
multipart = new MimeMultipart();
}
Multipart mpRel = new MimeMultipart("related");
BodyPart messageBodyPart = new MimeBodyPart();
File f = newFile(htmlFileName);
HtmlConverter converter = new HtmlConverter();
HTMLDocumentAndCID htmlDocCid = converter.embedImages(newFileReader(f));
boolean correctHTMLBug = forceCorrectHTMLBug;
if (!correctHTMLBug && detectCorrectHTMLBug) {
correctHTMLBug = htmlDocCid.needCorrectHTMLParserBug();
}
if (correctHTMLBug)
htmlDocCid.correctHTMLParserBug();
messageBodyPart.setContent(htmlDocCid.getDocument().toString(), CONTENT_TYPE);
mpRel.addBodyPart(messageBodyPart);

// add images
Iterator<String> iter = htmlDocCid.getImgReferences().keySet().iterator();
int cpt = 0;
while (iter.hasNext()) {
String cid = iter.next();
DataSource ds = null;
try {
URL url = newURL(htmlDocCid.getImgReferences().get(cid));
ds = new URLDataSource(url);
} catch (MalformedURLException mue) {
String filename = htmlDocCid.getImgReferences().get(cid);
ds = new FileDataSource(filename);
}
MimeBodyPart bpImg = new MimeBodyPart();

// Initialize and add the image file to the html body part
bpImg.setFileName(ds.getName());
bpImg.setText("Image " + cpt++);
bpImg.setDataHandler(new DataHandler(ds));
bpImg.setContentID("<" + cid + ">");
bpImg.setDisposition(MimeBodyPart.INLINE);
mpRel.addBodyPart(bpImg);
}

// add attachements and finish
if (attachements.size() > 0) {
BodyPart relBP = new MimeBodyPart();
relBP.setContent(mpRel);
multipart.addBodyPart(relBP);
addAttachements(attachements, multipart);
message.setContent(multipart);
} else {
message.setContent(mpRel);
}
}
} catch (Exception e) {
System.out.println("Problem when preparing message");
e.printStackTrace();
return"Could not prepare message to be sent.\n\nError reason :\n" + e.getMessage();
}
returnnull;
}
 
anladığım kadarıyla maili gönderen kısım ve bu mailin öğelerini alan kısımlar burası
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:09   #4 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

unutmadan bir de send ve connect nesnesi var. Onun kodları da aşağıdaki gibi
Kod:
privatevoid connect() throws MessagingException {
if (!mTransport.isConnected()) {
System.out.println("connect");
mTransport.connect();
}
}

/** v0.1.3(a) : with attachements, with embedded images */
publicString send(String dests) {
String error = null;
try {
InternetAddress addressTo = new InternetAddress(dests); 
message.setRecipient(Message.RecipientType.TO, addressTo);
if (message == null)
thrownewException("Message not prepared !!");
connect();
mTransport.sendMessage(message, message.getAllRecipients());
System.out.println(SUCCESS + message.getAllRecipients()[0]);
} catch (Exception e) {
System.out.println("Problem when sending message");
e.printStackTrace();
error = "Could not send message to " + dests + ".\n\nError reason :\n" + e.getMessage();
}
return error;
}
 
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:40   #5 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Kod yorum yapmak için çok uzun, fakat gördüğüm kadarıyla söyleyeyim

* message.addHeader ile Content-type ve encoding eklenebilir
* FileToString sınıfı içinde dosyadan okuma yapan bölümler doğru encoding ile okuyor mu kontrol edilebilir
* messageBody.setContent(msgText, CONTENT_TYPE) diye bir satır var, buradaki CONTENT_TYPE nereden alınıyorsa bu değer ISO-8859-9 yapılabilir.


Bunları bir deneyip sonuca bakmak lazım.
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:51   #6 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

Kod:
private static final String CONTENT_TYPE = "text/html";
 
CONTENT_TYPE buradan geliyor. Bunu nasıl ISO-8859-9 kodunda tanımlayabiliriz?
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:52   #7 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

ayrıca alakalı olabileceğini
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:53   #8 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

ayrıca alakalı olabileceğini düşündüğüm şu satırlar da var
Kod:
privatestaticfinalString XMAILER = "X-MailAgent";
privatestaticfinalString XMAILERVERSION = "X-MailAgentVersion";
privatestaticfinalString CONTENT_TYPE = "text/html";
privatestaticfinalString SUCCESS = "Mail successfully sent to ";

 
pegassi hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 20:58   #9 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

CONTENT_TYPE için "text/html; charset=ISO-8859-9" yazılabilir.

Fakat sadece o değil attachment olarak ayarlanan bir dosya var, o dosya FileToString sınıfı ile okunuyor, onun da encoding'i problem çıkarabilir ayrıca.
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 20/12/2006, 21:08   #10 (permalink)
Üye
 
Üyelik Tarihi: 12/2006
Mesaj: 98
Varsayılan

çok sıktım biliyorum ama hic anlamadığım için bunları soruyorum kusura bakma. Malesef java öğrenemedik. Her neyse fileToString nesnesinin kodları da aşağıdaki gibi
Kod:
publicclass FileToString {
publicstaticString convert(File f) throwsIOException {
FileInputStream in = newFileInputStream(f);
StringBuffer result = newStringBuffer();
int n;
byte[] b = newbyte[10];
n = in.read(b);
while (n != -1) {
result.append(newString(b, 0, n));
n = in.read(b);
}
return result.toString();
}
}
 
fakat messagge.addHeader kısmına content-type ya da encoding'i nasıl ekleyeceğimi hiç bilmiyorum eğer sence bu yazdığım bir dizi koddan değilse sorun son çare olarak addHeader işlemini nasıl yapabileceğimi soyleyebilir misin?
pegassi hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Amatörce Access Veri Tabanı İle Asp Üzerinde çalışıyorum onlinefizik Veritabanları & SQL 2 22/05/2006 02:27
Amatörce Web Tasarım Yarışması gameover Site Yorum 15 20/05/2004 21:54


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 05:46.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net