Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

Îåêßíçóå áðü ôï ìÝëïò Raoulh79. Τελευταία δημοσίευση από το μέλος Raoulh79 στις 04-11-2009, 17:54. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-11-2009, 18:20 54915

    Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}

    Καλησπέρα σε όλους,

    Δεν είμαι έμπειρος στον προγραμματισμό και θα ήθελα την βοήθεια σας σε ένα πρόβλημα που μου παρουσιάζετε στην .NET.  Έχω φτιάξει ένα πρόγραμμα το οποίο κάνει σύνδεση σε μια βάση sql και εμπλουτίζει με στοιχειά , που παίρνει από την βάση δεδομένων,  ένα text αρχείο.

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}

    Το πρόβλημα μου είναι ότι όταν ανοίγω το text αρχείο με command prompt και κάνω edit το αρχείο στα πεδία με τα ελληνικά γράμματα έχω πρόβλημα, τα εμφανίζει με περίεργα σύμβολα και πιάνουν διπλές θέσεις. Μετά από αρκετό ψάξιμο στο net βρήκα ότι το αρχείο που δημιουργό είναι UTF8 και ενώ πρέπει να είναι code page 737.

    Τι μετατροπή χεριάζετε να κάνω στων κώδικα για να δημιουργηθεί το αρχείο με CODE PAGE 737;

    Ο κώδικας που χρησιμοποιώ είναι ο εξής:

    Public Class Class1



    Public Shared Sub main()
    Dim ConnSQL1 As String = "ABC"
    Dim connection1 As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=
    ABC;Initial Catalog=ABC;User Id=ABC;Password=ABC")

    Dim myCMD As SqlCommand = New SqlCommand("select t1.sz_item_ref_no,left(DESCRIPTIONS.SZ_SHORT_DESCR + ' ',48), T1.N2_ITEM_PRICE from PLU as t1 inner join DESCRIPTIONS ON (DESCRIPTIONS.N0_LANGUAGE_CODE = 30 and DESCRIPTIONS.N0_AREA_CODE = 310 and DESCRIPTIONS.N0_DESCR_APPL_ID = 1 and DESCRIPTIONS.N0_DESCR_NO = t1.N0_DESCR_NO ) where t1.N0_REF_TYPE = 1 and t1.bl_weight_item = 1", connection1)


    Dim leitourgia As String

    Dim Tmhma As String
    Dim omada As String
    Dim FontSize As String
    Dim BarcodeType As String
    Dim Barcode As String
    Dim FirstLineSize As String
    Dim SecondLineSize As String
    Dim FirstLineDescr As String
    Dim SecondLineDescr As String
    Dim PluType As String
    Dim Tara As String
    Dim HBA1 As String
    Dim I As Integer

    Try

    connection1.Open()

    leitourgia = "0"
    FontSize = "0"
    Tmhma = "001"
    omada = "0000"
    BarcodeType = "1"
    Barcode = "000000000000"
    FirstLineSize = "5"
    SecondLineSize = "5"
    SecondLineDescr = " "
    PluType = "0"
    Tara = "000000"
    HBA1 = "000"
    I = 0


    Dim myReader As SqlDataReader = myCMD.ExecuteReader()
    Dim fNextResult As Boolean = True
    Using myWriter As IO.StreamWriter = New IO.StreamWriter("c:\everest\rss\plu.txt")

    Do Until Not fNextResult
    Do While myReader.Read()


    FirstLineDescr = myReader(1) '.ToString.PadRight(48, "0"c)
    myWriter.WriteLine(leitourgia & Long.Parse(myReader(0)).ToString("0000000000000") & Tmhma & omada & Long.Parse(myReader(0)).ToString("000000") & BarcodeType & "21" & Long.Parse(myReader(0)).ToString("00000") & "00000" & FirstLineSize & SecondLineSize & FirstLineDescr & SecondLineDescr & PluType & Long.Parse(myReader(2)).ToString("000000") & Tara & HBA1)
    I = I + 1

    Loop

    fNextResult = myReader.NextResult()
    Loop
    myWriter.Close()
    myReader.Close()
    End Using
    Catch ex As Exception
    Console.WriteLine(ex.Message)

    MessageBox.Show(ex.ToString)
    Finally

    connection1.Close()
    'MsgBox("Text is created.")
    Using myWriter As IO.StreamWriter = New IO.StreamWriter("c:\everest\rss\log.txt")

    myWriter.WriteLine(DateTime.Now().ToString & " text file created with " & I.ToString & " lines")

    End Using

    End Try

    End Sub

    End Class

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}

    Σας ευχαριστώ για των χρόνο σας



    Thanks in advance,

    Best Regards
    Δημοσίευση στην κατηγορία:
  •  03-11-2009, 19:40 54916 σε απάντηση της 54915

    Απ: Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

    Γιατι ανοίγεις το αρχείο με command prompt; Το code page 737 είναι για το MS DOS!!!! Δες  εδώ --> http://en.wikipedia.org/wiki/Code_page_737. Επειδή ακριβώς το command prompt ακολουθεί λογικές αλά dos για αυτό στο ζητά.
  •  03-11-2009, 20:09 54917 σε απάντηση της 54916

    Απ: Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}

    Γιατί το συγκεκριμένο αρχείο που βγάζει το πρόγραμμα μου θα το διαβάσει ένα άλλο πρόγραμμα που το περιμένει να είναι code page 737….


    Thanks in advance,

    Best Regards
  •  03-11-2009, 20:56 54918 σε απάντηση της 54917

    Απ: Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

    Καταρχήν PLEEEEEEEASE πρόσεχε τί κάνεις copy-paste, έχει γεμίσει όλο το post με headers του Word. Δεύτερον, για να κάνεις τη δουλειά σου απλά πρέπει να χρησιμοποιήσεις τον κατάλληλο constructor της StreamWriter ο οποίος δέχεται και παράμετρο Encoding:

    using writer as StreamWriter=New StreamWriter("c:\myfile.txt",true,Encoding.GetEncoding(737))

    Για να χρησιμοποιήσεις την Encoding πρέπει νά προσθέσεις στην αρχή του κώδικα το import System.Text .

    Γενικά, τα Windows χρησιμοποιούν παντού unicode (Encoding.Unicode) το οποίο είναι αντίστοιχο στο UTF16. Ακόμα και το notepad καταλαβαίνει ποιά αρχεία είναι ASCII, ποιά UTF8 και ποιά Unicode και τα ανοίγει ή τα σώζει κατάλληλα. Ο μόνος λόγος να χρησιμοποιήσεις codepage είναι για να στείλεις το κείμενο σε κάποια εφαρμογή η οποία δεν καταλαβαίνει από unicode, εφόσον βέβαια έχεις ρυθμίσει και το system locale του υπολογιστή στο ίδιο ακριβώς codepage.

    Σε όλες τις άλλες περιπτώσεις η χρήση UTF8 ή UTF16 σε απαλάσσει από τον πονοκέφαλο να σκέφτεσαι σε τί έσωσες και σε τί θα διαβάσεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  04-11-2009, 17:54 54932 σε απάντηση της 54918

    Απ: Visual Basic 2008 - Μετατροπή κώδικα για αλλαγή από code page utf8 σε 737 - VB 2008

    Ευχαριστώ δούλεψε τέλεια...

    Thanks in advance,

    Best Regards
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems