Page 2 of 2

Re:

Posted: 25 Jan 2012, 12:13 Wed
by EccotheTidesofTime2
Qwertiy wrote:
EccotheTidesofTime2 wrote:Не сохраняет названия видео
иероглифами
Семпл можно?
http://www.youtube.com/watch?v=-MH6z4H8Qlg

Posted: 25 Jan 2012, 16:36 Wed
by Qwertiy
Хм... Опера, Хром и Сафари показывают квадратики, а Firefox - что-то странное, причём на панели задач тоже квадратики...

PS: Есть подозрение, что DM выкидывает из имени все символы, которые не может отобразить. Кто-нибудь может это подтвердить? Если это так, то возникает вопрос, зачем это надо.

Re:

Posted: 25 Jan 2012, 18:33 Wed
by Korney San
Qwertiy wrote:Хм... Опера, Хром и Сафари показывают квадратики, а Firefox - что-то странное, причём на панели задач тоже квадратики...
Gotcha!
При установке мной MS Office 2003 среди прочего были поставлены универсальный и японский шрифт. Иероглифы на месте.
Image
Qwertiy wrote:PS: Есть подозрение, что DM выкидывает из имени все символы, которые не может отобразить. Кто-нибудь может это подтвердить? Если это так, то возникает вопрос, зачем это надо.
Скорее, это делает стандартная функция преобразования ссылки.

Posted: 25 Jan 2012, 23:37 Wed
by Qwertiy
Korney San wrote:При установке мной MS Office 2003 среди прочего были поставлены универсальный и японский шрифт. Иероглифы на месте.
А если в DM?
Qwertiy wrote:Скорее, это делает стандартная функция преобразования ссылки.
Имя ведь не из ссылки берётся? И зачем вообще что-то преобразовывать?

Re:

Posted: 26 Jan 2012, 8:35 Thu
by Korney San
Qwertiy wrote:
Korney San wrote:При установке мной MS Office 2003 среди прочего были поставлены универсальный и японский шрифт. Иероглифы на месте.
А если в DM?
Шрифты устанавливаются в систему, и после этого сразу же доступны любому приложению.
Другое дело, что если нужный шрифт в системе отсутствует, то вместо него по умолчанию подставляется Arial (в XP). Ну а квадраты - потому, что в шрифте нет знаков с указанными кодами.
Qwertiy wrote:Имя ведь не из ссылки берётся? И зачем вообще что-то преобразовывать?
Вообще по стандарту ссылка может быть (и должна быть) закодирована, если содержит отличные от латиницы знаки. Лишь недавно произошли изменения в стандарте, позволившие писать URLы в национальной кодировке. Соответственно при декодировании все символы, не входящие в алфавит, просто выбрасываются.
Что касается механизма получения имени видеофайла, об этом лучше расскажут разработчики. :)

Я скачал приведённый файл, имя у него получилось (и в DM, и на диске) "4+~".

Posted: 26 Jan 2012, 16:02 Thu
by Qwertiy
Korney San wrote:Шрифты устанавливаются в систему, и после этого сразу же доступны любому приложению.
Это понятно. Просто я подумал, что, если есть нужный шрифт, то DM может повести себя по-другому.
Korney San wrote:Что касается механизма получения имени видеофайла, об этом лучше расскажут разработчики. :)
Ну я в ссылке имени не вижу, скорее всего оно берётся со страницы вместе со ссылкой.
Korney San wrote:Я скачал приведённый файл, имя у него получилось (и в DM, и на диске) "4+~".
Ага...

Re:

Posted: 26 Jan 2012, 18:52 Thu
by Korney San
Qwertiy wrote:
Korney San wrote:Я скачал приведённый файл, имя у него получилось (и в DM, и на диске) "4+~".
Ага...
Очевидно (если всмотреться в японское название), где-то на этапе между разбором страницы и добавлением загрузки потерялись все нелатинские символы. ;)

Posted: 27 Jan 2012, 11:33 Fri
by Qwertiy
Korney San wrote:Очевидно (если всмотреться в японское название), где-то на этапе между разбором страницы и добавлением загрузки потерялись все нелатинские символы. ;)
Неа :wink:
Плюс и тильда - результаты конвертирования, в имени есть только четвёрка.
Image
Кстати, обращаю внимание, что все символы кроме четвёрки состоят из трёх байт.

Текст в title совпадает с текстом в других местах.

PS: Можешь куда-нибудь выложить шрифт с иероглифами?

Re:

Posted: 27 Jan 2012, 12:56 Fri
by Korney San
Qwertiy wrote:PS: Можешь куда-нибудь выложить шрифт с иероглифами?
Выложить не проблема - проблема определить, который из установленных. ;)

Posted: 27 Jan 2012, 14:23 Fri
by Qwertiy
Korney San wrote:Выложить не проблема - проблема определить, который из установленных. ;)
FontViewOK + буфер обмена :)

UPDATE: Если программа не видит ни одного шрифта, её надо запустить от администратора, или использовать From Folder вместо Installed System Fonts. Странно, с более ранней версией такого не было, но и From Folder тоже не было :)

UPDATE: Надо использовать юникодную версию, т. к. обычная делает конвертирование (с появлением плюса и тильды, кстати).

Posted: 27 Jan 2012, 15:17 Fri
by Qwertiy
Можно не выкладывать, нашёл уже :)

Почему-то меня это не удивляет :(

Posted: 27 Jan 2012, 19:27 Fri
by Qwertiy
Image

Code: Select all

Imports System.Text
Imports System.Drawing.Text

Public Class Form1
Inherits Form

Private ReadOnly TextAsIs As Byte() = {&HE3, &H80, &H90, &HE8, &HBB, &H8A, &HE7, &HAA, &H93, &H34, &HE3, &H80, &H91, &HE3, &H80, &H8C, &HE3, &H83, &HA0, &HE3, &H83, &HBC, &HE3, &H83, &HB3, &HE3, &H83, &HA9, &HE3, &H82, &HA4, &HE3, &H83, &H88, &HE6, &H9D, &HBE, &HE5, &HB1, &HB1, &HEF, &HBC, &H8B, &HE9, &HAB, &H98, &HE7, &H9F, &HA5, &HE3, &H80, &H8D, &HE4, &HB8, &H89, &HE3, &H83, &H8E, &HE5, &HAE, &HAE, &HEF, &HBD, &H9E, &HE7, &HA5, &H9E, &HE6, &H88, &HB8}
Private ReadOnly FontFile As String = System.IO.Path.Combine(My.Application.Info.DirectoryPath, "ARIALUNI.TTF")

Private WithEvents LstRess As New ListBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim Fonts As New PrivateFontCollection()
  Fonts.AddFontFile(FontFile)

  With LstRess
    .Dock = DockStyle.Fill
  End With

  With Me
    .Text = "Иероглифы - конвертирование"
    .AutoScaleMode = Windows.Forms.AutoScaleMode.None
    .Font = New Font(Fonts.Families(0), 16)
    .Controls.Add(LstRess)
    .ClientSize = New Size(640, LstRess.ItemHeight * 8 + 4)
  End With

  Dim Str As String

  With LstRess.Items
    .Add("UTF8 -> Unicode")
    Str = Encoding.UTF8.GetChars(TextAsIs)
    .Add(Str)

    .Add("")
    .Add("UTF8 -> 1251 -> Unicode")
    Str = Encoding.GetEncoding(1251).GetChars(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(1251), TextAsIs))
    .Add(Str)

    .Add("")
    .Add("UTF8 -> 1251 -> Unicode [без знаков вопроса]")
    Str = Str.Replace("?", "")
    .Add(Str)
  End With
End Sub

End Class
Компилировать так:

Code: Select all

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\vbc.exe /target:winexe /out:Hieroglyphes.exe /optimize+ /removeintchecks+ /debug- Hieroglyphes.vb /main:Form1 /imports:System.Windows.Forms /imports:System.Drawing
(можно использовать другую версию framework'а - проверено на v2.0.50727 и v3.5). В папку с программой надо положить файл шрифта ARIALUNI.TTF.