Yazar |
|
halil
Kayıt: 01.01.2006 |
|
Selamlar ,
konu başlığından da anlaşılacağı üzere türkçe karakterlerle başım belada , şöyleki ;
Kullanıcıya db den listeyi çekip Word dosyası halinde kullanıcıya yolluyorum ,
aynı sayfada üretilen iki dosyadan birinde türkçe karakter problemi yokken bi diğerinde karakterler bozuk çıkabiliyor , kafayı sıyırmak üzereyim :)
kod :
OracleConnection orc = new OracleConnection(ConfigurationSettings.AppSettings["ora"].ToString());
OracleCommand orco = new OracleCommand();
OracleDataReader ordt ;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/msword";
HttpContext.Current.Response.Charset = "windows-1254";
//HttpContext.Current.Response.ContentEncoding =
//System.Text.Encoding.GetEncoding("ISO-8859-9");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
// HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
string strFileName = rid+"_Malzeme_Listesi.doc";
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
StringBuilder strHTMLContent = new StringBuilder();
strHTMLContent.Append("<table align='Center' width='600px'>".ToString());
strHTMLContent.Append("<tr><td colspan='4' align='center'>MALZEME LİSTESİ</td></tr>".ToString());
strHTMLContent.Append("<td><b>Sıra No</b></td>".ToString());
strHTMLContent.Append("<td><b>Malzeme Adı</b></td>".ToString());
strHTMLContent.Append("<td><b>Adet</b></td>".ToString());
strHTMLContent.Append("<td><b>Birim</b></td>".ToString());
strHTMLContent.Append("</tr>".ToString());
string sql = string.Format(@"Select **** "); // uzuuuun bi sql ...
orco = new OracleCommand(sql,orc);
orc.Open();
OracleParameter opi = new OracleParameter("rid",OracleType.VarChar);
opi.Value = rid;
orco.Parameters.Add(opi);
ordt = orco.ExecuteReader();
while (ordt.Read())
{
strHTMLContent.Append("<tr>".ToString());
strHTMLContent.Append("<td style='width: 100px'>"+ordt[0].ToString()+"</td>".ToString());
strHTMLContent.Append("<td style='width: 100px'>"+ordt[1].ToString()+"</td>".ToString());
strHTMLContent.Append("<td style='width: 100px'>"+ordt[2].ToString()+"</td>".ToString());
strHTMLContent.Append("<td style='width: 100px'>"+ordt[3].ToString()+"</td>".ToString());
strHTMLContent.Append("</tr>".ToString());
}
strHTMLContent.Append("</table>".ToString());
HttpContext.Current.Response.Write(strHTMLContent);
HttpContext.Current.Response.End();
HttpContext.Current.Response.Flush();
koddan da görebileceğiniz gibi denemediğim Encoding kalmadı :) ;
bu kodda hangi encoding i seçersem , web.config e de aynısını geçiyorum ;
<globalization
requestEncoding="windows-1254"
responseEncoding="windows-1254"
fileEncoding="windows-1254"
/>
sistem de xp pro sp2 yüklü ...
bi fikri olan varsa paylaşırsa , çok sevinirim ...
....
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
veritabanından bilgi çekiyorsun sanırım bunlar NVARCHAR olmadığından olabilir. (MsSql server2000 de benim başıma gelmişti. Yaptığın encodinglerde hata yok gibi.)
|
|
Yazar |
|
halil
Kayıt: 01.01.2006 |
|
metin alanların tamamı oracle da varchar olarak duruyo , db den çekmediğim kısım bile bi düzgün bi bozuk gelebiliyor ;
en başta bi "MALZEME LİSTESİ" var tablonun başlığı , o bile bi düzgün bi bozuk ... :)
....
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
Bende eski yazdığıma baktım.
düz txt dosyasına çıkarırken bile benzer problem yaşanabiliyor.
Bir tek gözüme çarpan culture tanımlamış olmam.
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="tr-TR" uiCulture="tr-TR"/>
belki buydu.
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
dosyayı yolladığım kod parçası. değişkenleri göz ardı edersen
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment;filename="+dosya_adi+uzanti+"");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Windows-1254");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.WriteFile(dosya_yolu);
Response.End();
|
|
Yazar |
|
halil
Kayıt: 01.01.2006 |
|
yine olmadı abicim : ) , attachment ı inline yapınca da karakterler problemsiz geliyor , word de problemli ...
akla ziyan bişey farkettim , bu döktüğüm listenin uzunluğu 10-15 satıra kadar problem çıkarmıyor , karakterler düzgün , ama 50-60 satırlık bi liste dökünce karakterler bozuluyo , bu işler hep benimi bulur yarabbim :)
yardımlar için teşekkürler , son eklediğin kodun tam versiyonu varmı ?
araya satırları yazılan versiyonu ?? bişey değişmeyecek gibi duruyo da yine de deniyim ...
....
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
kodun tam hali uzun ve biraz kafa karıştırabilir.
Benim yazdığımda ben önce dosyayı serverda oluşturup sonra kullanıcıya bu kod vasıtasıyla indirtiyorum.
Senin yazdığında word olarak kaydettiğin dosya içinde bir html tablo yazmayamı çalışıyorsun. (Bununda başına encoding koy )
Şunu denedin mi benim koddaki : application/octet-stream
Birde internette şöle bir şeye raslamıştım.
| [small]
#region Dosya Encoding Tesbiti
/// <summary>
/// Dosya Yolu Girilen (c:inetpubwwwroot şeklinde) Dosyanın Encodinginin ASCII mi yoksa Unicode'mu olduğunu belirler.
/// </summary>
/// <param name="DosyaYolu">Encodingi belirlenecek Dosya Yolu</param>
/// <returns></returns>
public System.Text.Encoding DosyaninEncodinginiBul(string DosyaYolu)
{
System.Text.Encoding enc = null;
System.IO.FileStream file = null;
try
{
file = new System.IO.FileStream(DosyaYolu,FileMode.Open, FileAccess.Read, FileShare.Read);
if (file.CanSeek)
{
byte[] bom = new byte[4]; // Get the byte-order mark, if there is one
file.Read(bom, 0, 4);
if ((bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) || // utf-8
(bom[0] == 0xff && bom[1] == 0xfe) || // ucs-2le, ucs-4le, and ucs-16le
(bom[0] == 0xfe && bom[1] == 0xff) || // utf-16 and ucs-2
(bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff)) // ucs-4
{
enc = System.Text.Encoding.Unicode;
}
else
{
enc = System.Text.Encoding.ASCII;
}
}
else
{
// The file cannot be randomly accessed, so you need to decide what to set the default to
// based on the data provided. If you're expecting data from a lot of older applications,
// default your encoding to Encoding.ASCII. If you're expecting data from a lot of newer
// applications, default your encoding to Encoding.Unicode. Also, since binary files are
// single byte-based, so you will want to use Encoding.ASCII, even though you'll probably
// never need to use the encoding then since the Encoding classes are really meant to get
// strings from the byte array that is the file.
enc = System.Text.Encoding.ASCII;
}
}
catch(System.Exception)
{}
finally
{
// Close the file: never forget this step!
file.Close();
}
return enc;
}
#endregion
[/small] |
belki işine yarar.
|
|
Yazar |
|
halil
Kayıt: 01.01.2006 |
|
html in içine de encoding koydum düzeldi : )
3 satırdan birine encoding gerekiyomuş demekki :P
hatırlattığın için sağol :)
....
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | |