I am talking about the reverse solidus, U+005c (also known as the backslash to some).

It is even known as the "whack" to others (when some people talk about UNC paths, they will say 'whack whack servername' when they mean \\servername).

I am sure you may know of other names.

Though if you are on a Windows system with a Korean system locale, you have another name for it -- Won sign (I talked about this a little bit here).

And if you are on a Windows system with a Japanese system locale, you have yet another name for it -- Yen sign (I hinted at this briefly here).

The reason?

Well, Larry Osterman talked back in June about why the DOS PATH character is '\'.

However, in the JIS and KSC standards, 0x5c is where the Yen and the Won are stored. And it is not like you could have a system without paths just because it has a Japanese or Korean configuration, right?

So in code page 932, 0x5c (YEN SIGN) has to have a round trip mapping to U+005c (REVERSE SOLIDUS), with a mere best fit mapping to U+00a5 (YEN SIGN).

And in code page 949, 0x5c (WON SIGN) has to have a round trip mapping to U+005c (REVERSE SOLIDUS), with a mere best fit mapping to U+20a9 (WON SIGN).

In both cases, the importance of money was overshadowed by the importance of a path separator (this is, by the way, yet another reason to be sure to always use Unicode!).

This all came up yesterday when in a comment to my post Show me the [small]money, Yoshihiro Kawabata mentioned that U+005c was also being accepted -- he even ran through every character in the BMP (SQL he ran available online!) to see what else works in SQL Server as a "currency sign". It looks like they did indeed add some more currency symbols in SQL Server 2005, although the Yukon documentation has not completely caught up with the list. The additions in Yukon are:

Codepoint Symbol Name Added in SQL 2005
U+0024 $ DOLLAR SIGN  
U+005C \ REVERSE SOLIDUS  
U+00A2 CENT SIGN *
U+00A3 POUND SIGN  
U+00A4 ¤ CURRENCY SIGN  
U+00A5 ¥ YEN SIGN  
U+09F2 BENGALI RUPEE MARK  
U+09F3 BENGALI RUPEE SIGN  
U+0E3F ฿ THAI CURRENCY SYMBOL BAHT  
U+17DB KHMER CURRENCY SYMBOL RIEL *
U+20A0 EURO-CURRENCY SIGN  
U+20A1 COLON SIGN  
U+20A2 CRUZEIRO SIGN  
U+20A3 FRENCH FRANC SIGN  
U+20A4 LIRA SIGN  
U+20A5 MILL SIGN *
U+20A6 NAIRA SIGN  
U+20A7 PESETA SIGN  
U+20A8 RUPEE SIGN  
U+20A9 WON SIGN  
U+20AA NEW SHEQEL SIGN  
U+20AB DONG SIGN  
U+20AC EURO SIGN  
U+20AD KIP SIGN  
U+20AE TUGRIK SIGN  
U+20AF DRACHMA SIGN  
U+20B0 GERMAN PENNY SIGN  
U+20B1 PESO SIGN  
U+FDFC RIAL SIGN *
U+FE69 SMALL DOLLAR SIGN *
U+FF04 FULLWIDTH DOLLAR SIGN *
U+FFE0 FULLWIDTH CENT SIGN *
U+FFE1 FULLWIDTH POUND SIGN *
U+FFE5 FULLWIDTH YEN SIGN *
U+FFE6 FULLWIDTH WON SIGN *

(Note that as I talked about in Show me the [small]money, most of the currency symbols are still not on the list, despite the additions that have been done!)

I am not going to get into why I think this special relationship between U+005c, U+00a5, and U+20a9 feels kind of disconnected and odd and awkward, because I understand (given the absolute historical identity and need of the path separator) why it has to be there.

And I do understand why it would be on SQL Server's magical list of things that are treated as currency symbols (after all, customers adding currency data from non-Unicode Korean and Japanese sources should not fail).

Given how we as a company try to act like the whole issue not there a lot of the time, I even understand why it would not ever have been documented since documenting feels kind of awkward.

So I would rather call it a path separator on Windows, since that is true on every language configuration upon which Window is run. It makes the whole situation a lot easier to deal with, conceptually....

(In the meantime, feel free to vote on Kawabata-san's issue related to the unlisted U+005c in the documentation at the MSDN Product Feedback Center!)

 

This post brought to you by "\" (U+005c, a.k.a. REVERSE SOLIDUS)