by Michael S. Kaplan, published on 2005/10/12 03:31 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2005/10/12/479561.aspx
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)
# Ben Bryant on 12 Oct 2005 10:19 AM:
# Michael S. Kaplan on 12 Oct 2005 11:10 AM:
# Maurits [MSFT] on 12 Oct 2005 4:15 PM:
# Michael S. Kaplan on 12 Oct 2005 4:33 PM:
# Yoshihiro kawabata on 13 Oct 2005 5:43 AM:
# Nick Lamb on 14 Oct 2005 8:46 AM:
# Michael S. Kaplan on 14 Oct 2005 10:13 AM:
# Michael S. Kaplan on 14 Oct 2005 10:15 AM:
# Massuda on 1 Nov 2005 11:21 AM:
referenced by
2013/10/31 At long last, explaining the yen/won/backslash bug plausibly
2007/11/09 If you get a yen for something a bit wider you might be out of luck
2007/03/28 A yen for Yen may be left unsatiated
2006/05/26 Two chickens in every pot, and an ASCII in every code page
2006/03/17 On the fuzzier definition of a 'Unicode application' on Win9x....
2005/12/28 Getting rid of your extra yen
2005/11/09 Getting around the default system locale
2005/11/07 SQL Server and the CLR have different ways of getting the money
2005/11/01 I WON to talk about the YEN
2005/10/14 The mission of GIFT