2010-06-29 11 views

Odpowiedz

12

język C# obsługuje ten z ucieczek:

var str = "\u0030More text"; 

Ale to nie jest dostępne w VB.NET. Strzeż się, że prawie na pewno nie będziesz używać używać Chr(), który jest przeznaczony dla starszego kodu, który działa z domyślną stroną kodową. Będziesz chciał ChrW() i przekazać kodek kodu Unicode.

Twój konkretny przykład nie stanowi problemu, & H0030 to kod dla "0", więc możesz po prostu umieścić go bezpośrednio w literale łańcuchowym.

Dim str As String = "0MoreText" 

Można użyć narzędzia charmap.exe skopiować i wkleić glify, które nie mają łatwego kodu ASCII.

+0

\ u0030 jest zwykłym 0 - 0 ma wartość 48, która jest równa 0x30, która jest o kodowy, a te ucieczki są zapisane w systemie szesnastkowym. Prawdopodobnie myślałeś o * dziesiętnej * 30, \ u001e, która według http://www.unicode.org/charts/PDF/U0000.pdf jest znakiem kontrolnym o nazwie Separator rekordu (lub SEPARATOR INFORMACYJNY DRUGI w Unicode) . (It * does * istnieje jako codepoint, ale nie ma glifu, ponieważ ma być niedrukowalną postacią.) –

+0

Ups, masz rację. Po zaktualizowaniu. –

+1

+1: za poinformowanie czytelnika o programie * Character Map * (charmap.exe).Świetna rada, której używam cały czas. – AMissico

23

Użyj funkcji ChrW(), aby zwrócić znaki Unicode.

Dim strW As String 
strW = ChrW(&H25B2) & "More text" 
1

używam mapę znaków narzędziowego (charmap.exe). Uruchom i wybierz żądane znaki z czcionki kontrolnej, takie jak © Missico ™, skopiuj, a następnie wklej do właściwości Text w siatce właściwości. Będziesz musiał zmienić czcionkę, ponieważ domyślną czcionką dla formularza jest "Microsoft Sans Serif", który nie jest czcionką Unicode. Nie sądzę, że możesz użyć tej metody dla znaków niedrukowalnych.

W zależności od potrzeb można również użyć lokalizacji, która tworzy pliki zasobów dla każdego języka. Ponownie, użyjesz charmap.exe, aby wybrać i skopiować potrzebne znaki i wkleić je do pliku zasobów. Prawdopodobnie możesz używać niedrukowalnych znaków, takich jak tabulatory, znaki nowej linii i tak dalej, ponieważ jest to tylko plik tekstowy (Unicode).

+0

Nie rozwiąże to problemu, gdy plik kodu zostanie zapisany w zestawie znaków, który nie obsługuje tych znaków - i może spowodować problemy, jeśli czcionka edytora nie obsługuje wszystkich znaków Unicode. To nie jest dobre rozwiązanie! –

+1

Ale to * jest * najlepszym rozwiązaniem, jeśli plik jest zapisany w kodowaniu Unicode (jak powinny to być wszystkie współczesne pliki tekstowe) i czy czcionka obsługuje znaki. – Philipp

0

Miałem nadzieję, że można użyć literałów XML i ucieczek XML, ale to nie działa. Nie sądzę, aby literały XML pozwalały na korzystanie z &#NN;. Chociaż it is a way zawiera cytaty " wewnątrz ciągów.

'Does not compile :(' 
Dim myString = _ 
<q>This string would contain an escaped character &#30; if it actually compiled.</q>.Value 
0

Nie, nie jest to możliwe, ponieważ ciągi VB nie obsługują sekwencji unikowych. Po prostu użyj ChrW, która ma kilka znaków do wpisania, ale także nieco czystsza.

+0

Nie chodzi o to, że bardziej pisze się, że nie można tego zrobić w projektancie formularzy i bardziej żmudne projektowanie formularza, gdy trzeba go uruchomić za każdym razem, gdy chce się go zobaczyć. – CodeFusionMobile

4

wymienić Chr z Convert.ToChar:

str = Convert.ToChar(&H0030) & "More text"