• 03-07-2015, 10:20:00
    #1


    Merhabalar IBM AS400e bağlantı kurup oradaki bir tablodan verileri okuyorum fakat CHAR tipinde olan kolonlar System.byte[] şeklinde geliyor sorunu çok araştırdım fakat doğru düzgün birşey bulamadım. Yardımlarınızı bekliyorum
  • 03-07-2015, 12:01:17
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Yeni kayıt oluşturduğun kod parçacığını paylaşırsan bakalım. Nasıl bir data gidiyor olabilir onu anlamak gerekir.
  • 03-07-2015, 12:40:49
    #3
    hocam veriler byte array olarak geliyor. her bir byte arrayi stringe convertlemen gerekiyor şöyle;

    string result = System.Text.Encoding.UTF8.GetString(byteArray);
  • 03-07-2015, 13:12:21
    #4
    Burhan_957 adlı üyeden alıntı: mesajı görüntüle
    Yeni kayıt oluşturduğun kod parçacığını paylaşırsan bakalım. Nasıl bir data gidiyor olabilir onu anlamak gerekir.
    Kayıt oluşturmuyorum varolan kayıtı çekiyorum. Şu şekilde
     String sql = "SELECT * FROM AYDDAT.LSDET01L FETCH FIRST 5 ROWS ONLY";
    
                    string con = ConString;
                    OleDbConnection connLocal = new OleDbConnection(con);
                    OleDbDataAdapter da_local = new OleDbDataAdapter(sql, con);
                    DataTable dt = new DataTable();
                    da_local.Fill(dt);
    VoyL adlı üyeden alıntı: mesajı görüntüle
    hocam veriler byte array olarak geliyor. her bir byte arrayi stringe convertlemen gerekiyor şöyle;


    string result = System.Text.Encoding.UTF8.GetString(byteArray);
    https://i.hizliresim.com/a5W7G5.jpg

    Çevirmedi hocam
  • 03-07-2015, 13:52:41
    #5
    UTF8 yerine farkli seyler dener misin? utf32, Default gibi

    System.Text.Encoding.Default.GetString(byteArray); gibi

    ayrica bu bir string ifadesi de olmayabilir yani sayilari da barindirabilir..
  • 03-07-2015, 14:20:15
    #6
    ASCII de deneyebilirsin en bilindiği o oluyor genelde.
  • 03-07-2015, 15:11:28
    #7
    Şuan team ile bağlıyım arkadaşa her encoderı denedim olmadı

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:11:28 -->-> Daha önceki mesaj 14:28:38 --

    IBM Charseti olan EBCDIC yüzünde baya cebelleştim ama EBCDIC bulduktan sonra iş tamamdır.

    public static byte[] ConvertEbcdicToAscii(byte[] ebcdicData)
    {
    // Create two different encodings.
    Encoding ascii = Encoding.ASCII;
    Encoding ebcdic = Encoding.GetEncoding("IBM037");

    //Retutn Ascii Data
    return Encoding.Convert(ebcdic, ascii, ebcdicData);
    }

    EBCDIC kodunu önce Ascii çevirdik sonra ascii kodunu stringe çevirdik
  • 03-07-2015, 15:13:39
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hala AS400 kullanan var mı ya

    byte[] bytes = {Byte.MinValue, 40, 80, 120, 180, Byte.MaxValue};
    char result;
    foreach (byte number in bytes)
    {
       result = Convert.ToChar(number);
       Console.WriteLine("{0} converts to '{1}'.", number, result);
    }
  • 03-07-2015, 15:16:10
    #9
    Burhan_957 adlı üyeden alıntı: mesajı görüntüle
    Şuan team ile bağlıyım arkadaşa her encoderı denedim olmadı

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:11:28 -->-> Daha önceki mesaj 14:28:38 --

    IBM Charseti olan EBCDIC yüzünde baya cebelleştim ama EBCDIC bulduktan sonra iş tamamdır.

    public static byte[] ConvertEbcdicToAscii(byte[] ebcdicData)
    {
    // Create two different encodings.
    Encoding ascii = Encoding.ASCII;
    Encoding ebcdic = Encoding.GetEncoding("IBM037");

    //Retutn Ascii Data
    return Encoding.Convert(ebcdic, ascii, ebcdicData);
    }

    EBCDIC kodunu önce Ascii çevirdik sonra ascii kodunu stringe çevirdik
    Kendisine çok ama çok teşekkür ederim sorunu sayesinde çözdük

    rob33n adlı üyeden alıntı: mesajı görüntüle
    Hala AS400 kullanan var mı ya

    byte[] bytes = {Byte.MinValue, 40, 80, 120, 180, Byte.MaxValue};
    char result;
    foreach (byte number in bytes)
    {
       result = Convert.ToChar(number);
       Console.WriteLine("{0} converts to '{1}'.", number, result);
    }
    Hala kullanan yerler var şaşırtıcı ama acı gerçek