Traditional Culture Encyclopedia - Hotel reservation - Shopping guide in Malaysia

Shopping guide in Malaysia

Today, Xiaobian will share with you the shopping guide knowledge in Malaysia, which will also analyze and answer questions about shopping in Malaysia. If you can solve the problem you want to know, pay attention to this website.

How much does a self-help tour guide in Malaysia need to bring?

Malaysia's per capita tourism consumption: 5000-8000 yuan

Suggested visit: 4-5 days.

The consumption level in Malaysia is generally 2.5-3.5 ringgit for lunch and dinner and 1-2 ringgit for breakfast. It will be cheaper if you cook by yourself. The cost of living in Malaysia is not very high, and the price is generally twice that in China, but many goods are cheaper than in China, and the cost of eating out will be the same as or lower than that in big cities in China. In big cities in Malaysia, such as Kuala Lumpur, breakfast in restaurants is generally within 5-8 ringgit, and lunch in restaurants (cafes) is also within 5-8 ringgit. If you have a meal in a shopping mall, it is about 15-30 ringgit, and dinner in a restaurant is usually 5-8 ringgit. If you go to a high-end place, it is 15-30 ringgit. Currency exchange: RM1= RM1.64 RMB1RMB = RM 0.61The Malaysian currency is RM, the exchange rate is about RM 1 RMB =0.5, and USD 1 =3.2. RMB cannot be converted into Malaysian ringgit in China, but it can be converted at any Malaysian currency exchange. It is not recommended to exchange Malaysian ringgit in large quantities at the airport. Visitors only need to change a small amount of money at the airport to pay for the trip. However, before coming to Penang, it is best to exchange enough Malaysian ringgit in Kuala Lumpur, because there are not as many money exchange points in Penang as in Kuala Lumpur, and the exchange rate is relatively low. Airports, shopping centers and hotels all have foreign currency exchange centers (generally only accept paper money). Every shopping center has a money changer, but the exchange rate of the money changer in the city center is slightly lower. Most hotels charge extra when accepting currency exchange. Traveler's checks must be cashed at the bank. When traveling in the suburbs, be sure to bring enough cash and change. It is not cost-effective to exchange Malaysian ringgit at the airport. There are many more cost-effective exchange points in the city. If you are going to other cities from Kuala Lumpur, you'd better change enough money in Kuala Lumpur before you leave, because the exchange rate of other cities is lower than Kuala Lumpur, and old coins and damaged coins are not accepted. Tipping Malaysia has no habit of tipping. If you are satisfied with the service, you can tip 5- 10 ringgit as appropriate. When eating in a restaurant, the bill usually includes 6% government tax and 10% service tax, so there is no need to tip.

Only the head of the family can go to the supermarket. Why is gender discrimination so serious in Malaysia?

There are many factors. The most important thing is cultural factors.

"Only the head of the family can go to the supermarket." This policy introduced by Malaysia during the epidemic actually implies gender discrimination. For example, why do men have to be the head of the family? And why only men can go to the supermarket?

And the funny thing is that after the introduction of this regulation, it also caused a lot of trouble. The inexperienced man lost his way in the supermarket and was "ignorant" about the dishes. Some supermarkets have specially issued a "husband shopping guide" for this purpose.

Gender discrimination in Malaysia is actually blatant. For example, a recent hot search said that Malaysia advised women to "pay attention to their appearance" even when working at home, and not to be disheveled. "Be considerate like Doraemon", do not complain, and create a good family environment.

Hearing this, do you feel that you have returned to the last century? There are so many demands on women, but nothing is said about how men should fulfill their obligations, which fully reflects Malaysia's patriarchal society.

The reason is that religion has a great influence on the local area. Although the culture is diverse, the population composition of Malay is mostly Muslim, Islam is dominant and the atmosphere is very conservative. Women should wear headscarves, do not participate in recreational activities with men, and do a good job of "female duty".

Statistics show that unmarried women in Malaysia value religion first in marriage. Because of different beliefs, their daily life and ideas are very different, which affects their lives.

And most Malay women have no idea of not getting married. Because their religion regards marriage as a "holy line" and opposes celibacy. For this reason, local laws allow Malaysians to be polygamous, and a man can marry up to four women, while China people are monogamous.

This powerful ideological constraint continues to oppress local women. Although people's awareness of equal rights has improved in recent years, on the whole, the status of Malay women is still very low, and there are still many ways to go in the future.

1。 & ampvoid 0! = = parameter)}}; ! function(){ if(" object " = = type of window){ if(" intersect observer " in window & amp; & "Cross Observation" in Window and Observation; "intersectionRatio" in & window. intersectionobserventry . prototype){ " is intersection " in window。 intersectionobserventry . prototype | | object . define property(window。 intersectionobserventry . prototype," isIntersecting ",{ get:function(){ return this . intersection ratio & gt; 0}}); return}var t=window.document,e =[]; r . prototype . throttle _ time out = 100,r.prototype.POLL_INTERVAL=null,r . prototype . use _ MUTATION _ OBSERVER =! 0,r . prototype . observe = function(t){ if(! This. _ observationtargets . some(function(e){ return e . element = = t }){ if(! (t &1= = t.nodetype)) throws an error ("target must be an element"); This. _registerInstance(),this。 _ observationtargets.push ({element: t, entry:null}), this. _monitorIntersections(),this。 _checkForIntersections()}},r . prototype . unobserve = function(t){ this。 _observationTargets=this。 _observationTargets.filter (function (e){return e.element! =t}), this. _ observation targets . length | |(this。 _unmonitorIntersections(),this。 _unregisterInstance())},r . prototype . disconnect = function(){ this。 _observationTargets=[],this。 _unmonitorIntersections(),this。 _unregisterInstance()},r . prototype . takerecords = function(){ var t = this。 _ queuedentries . slice(); Return this. _queuedEntries=[],t},r . prototype . _ init thresholds = function(t){ var e = t | |[0]; return Array.isArray(e)||(e=[e]),e.sort()。 filter(function(t,e,n){if("number "! = type of t || isnan (t) || t 1) throw error ("threshold must be a number between 0 and1,including 0 and1"); Back to t! = = n[e- 1]} },r . prototype . _ parserotmargin = function(t){ var e =(t | | " 0px ")。 Split (/\s+/). map(function(t){var e=/^(-? \d*\。 ? \d+)(px|%)$/。 exec(t); If (! E) Throwing error ("rootMargin must be specified in pixels or percentage"); return { value:parse float(e[ 1]),unit:e[2]} }; return e[ 1]= e[ 1]| | e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[ 1],e},r . prototype . _ monitor crossions = function(){! This. _ monitoring interaction &&(this. _monitoringIntersections=! 0, this. Polling _ Interval? This. _ monitoring interval = setInterval(this。 _checkForIntersections,this。 POLL_INTERVAL):(o(window, "resize", this. _checkForIntersections,! 0), o(t, "scroll", this. _checkForIntersections,! 0), this. Use "Mutation Observer" in the _ Mutation _ Observer & amp& amp window. & This. _ DOM observer = new mutation observer(this。 _ checkforsections), this. _domObserver.observe(t,{attributes:! 0, sublist:! 0,characterData:! 0, subtree:! 0}))))},r . prototype . _ unmonitorIntersections = function(){ this。 _ monitoring interaction &&(this. _monitoringIntersections=! 1, clearInterval (this. _monitoringInterval), this. _monitoringInterval=null,i(window," resize ",this。 _checkForIntersections,! 0), I (t, Scroll, this. _checkForIntersections,! 0), this. _ domobserver &&(this. _domObserver.disconnect(),this。 _domObserver=null))},r . prototype . _ checkForIntersections = function(){ var t = this。 _rootIsInDom(),e=t? This. _ getroot rect():s(); This. _ observationtargets . foreach(function(r){ var o = r . element,i=a(o),s=this。 _rootContainsTarget(o), c=r.entry, u = t & S&P. & this. _ computetargetandroot intersection(o,e),f = r . entry = new n({ time:window . performance & amp; & Performance & amp& ampperformance.now (), target:o, boundingclient: i, rootBounds:e, intersect rect: u}); c? t & amp& amps? This. _hasCrossedThreshold(c,f)& amp; & this. _ queuedentries . push(f):c & amp; & ampc.is interleaving & this. _ queueentries.push (f): this. _queuedEntries.push(f)},this),this。 _ queuedEntries.length & amp& amp this. _callback(this.takeRecords(),this)},r . prototype . _ computetargetandrootcurgence = function(e,n){if("none "! =window.getComputedStyle(e)。 display){for(var r=a(e),o=u(e),i=! 1; ! Me; ){var s=null,c= 1==o.nodeType? window . getcomputedstyle(o):{ }; If("none"==c.display) returns; if(o==this.root||o==t? (I =! 0,s=n):o! = t.body & amp& oh! = t.documentelement &&"visible"! Overflow &&(s = a (o)), s&&! (r=function(t,e){var n=Math.max(t.top,e.top),r=Math.min(t.bottom,e.bottom),o=Math.max(t.left,e.left),i=Math.min(t.right,e.right),a=i-o,s = r-n; return a & gt= 0 & amp& amps & gt= 0 & amp& amp{top:n,bottom:r,left:o,right:i,width:a,height:s}}(s,r)))break; o=u(o)}return r}},r . prototype . _ getRootRect = function(){ var e; if(this . root)e = a(this . root); else{var n=t.documentElement,r = t . body; e={top:0,left:0,right:n . client width | | r . client width,width:n . client width | | r . client width, Bottom: n.clientheight || r.clientheight, height: n.clientheight || r.clientheight}} returns this. _ expandrectbyrootremargin(e)},r . prototype . _ expandrectbyrootremargin = function(t){ var e = this。 _ rootmarginvalues . map(function(e,n){return"px"==e.unit? e.value:e.value*(n%2? t.width:t.height)/ 100}),n={top:t.top-e[0],right:t.right+e[ 1],bottom:t.bottom+e[2],left:t . left-e[3]}; return n.width=n.right-n.left,n.height=n.bottom-n.top,n},r . prototype . _ hasCrossedThreshold = function(t,e){ var n = t & amp; & ampt.isIntersecting? t . intersection ratio | | 0:- 1,r = e.isIntersecting? e . intersection ratio | | 0:- 1; If (n! = = r)for(var o = 0; OE . index of(this)& amp; & ampe.push(this)},r . prototype . _ unregister instance = function(){ var t = e . index of(this); - 1! = t & amp.splice (t, 1)}, window. IntersectionObserver = r,window。 IntersectionObserverEntry = n} function n(t){this.time=t.time, this.target=t.target, this.rootBounds=t.rootBounds, this . bounding client rect = t . bounding client rect,this . intersect rect = t . intersect rect | | s(),this.isIntersecting =! ! t.intersectionRectvar e=this.boundingClientRect,n=e.width*e.height,r = this.intersectionRect,o = r . width * r . height; n? this . intersect ratio = Number((o/n)。 to fixed(4)):this . intersection ratio = this . is intersection? 1:0} function r(t, e){var n, r, o, I = e || {}; If ("function"! =typeof t) throws an error ("callback must be a function"); If (i.root & kloc-0/! =i.root.nodeType) throws an error ("root must be an element"); This. _checkForIntersections=(n=this。 _ checkforintersections . bind(this),r=this。 THROTTLE_TIMEOUT, o=null, function () {o || (o = settimeout (function () {n (), o=null}, r))}, this. _callback=t, this. _observationTargets=[],this。 _queuedEntries=[], this. _rootMarginValues=this。 _ parserotmargin(I . root margin),this.thresholds=this。 _initThresholds(i.threshold),this.root=i.root||null,this.rootMargin=this。 _ root margin values . map(function(t){ return t . value+t . unit })。 join(" ")function o(t,e,n,r){ " function " = = type of t . addevent listener? t.addEventListener(e,n,r||! 1):" function " = = type of t . attach event & amp; & ampt.attachEvent("on"+e,n)}function i(t,e,n,r){ " function " = = type of t . removeeventlistener? t.removeEventListener(e,n,r||! 1):" function " = = type of t . detatchevent & amp; & ampt.detatchEvent("on"+e, n)} function a (t) {var e; try { e = t . getboundingclientrect()} catch(t){ } return e? (e.g., width and length; & height || (e = {top: e.top, right:e.right, bottom:e.bottom, left:e.left, width:e.right-e.left, height:e.bottom-e.top}), e): s (. Bottom:0, left:0, right:0, width:0, height:0}} Function c(t, e) {for (var n = e; n; ){if(n==t)return! 0; n=u(n)}return! 1} function u (t) {var e = t.parentnode; Returns e &11= = e Node Type & amp& ampe Host? Moderator: e & e.assigned slot? e . assigned slot . parent node:e } }(); Var L= "observer"; function C(){ } function N(t){ var e = t . container,n=t.url,r = t.paramsthis.opts={container:e,url:n,params:void 0===r? {}:r},this . init()} N . prototype = { constructor:N,init:function(){var t=this,e = t . opts . container; t . observer = new intersection observer(t . observe CB . bind(t))、e & amp& amparray . prototype . slice . call(document . query selector all(e))。 forEach(function(e){ t . observer . observe(e)})},observe:function(t){ this . observer . observe(t)},observe CB:function(t){ var e = this; t . foreach(function(t){ if(t . is intersection){ var n = t . target; If (! n . getattribute(L)){ var r = e . combinedata(n); e.log(r),e.observer.unobserve(n),n.setAttribute(L, 1)}}},combineData:function(t){ var e = this . opts . params,n = { data:{ } }; For (var r in e) if (e.hasownproperty (r)) {var o = t.getattribute (e [r]); ""! = = o & amp& amp(n.data[r]=o)}return n},log:function(t){ this . n click(t)},n click:function(t){ var e = this . opts . URL; t . rand = this . addrand(); var n= " "。 concat(e,"? ).concat(this . encodesearchparams(t)); this.imgRequest(n,t)},imgRequest:function(t,e){try{var n=e.rand,r = new Imagewindow[-IMAGE "+n]= r, r . on load = r . on error = r . onabort = function(){ r . on load = r . on error = r . onabort = null,r=null,window[-IMAGE "+n]= C },r.src=t}catch(t){}},addRand:function(){ return math . random()。 toString( 16)。 slice(2,8)+Math.random()},encodeSearchParams:function(t){ var e =[]; For (var n in t) if (t.hasownproperty (n)) {var r = t [n]; " object " = = r & amp; & amp(r=JSON.stringify(r))、e.push([n,encodeURIComponent(r)]。 join(" = ")} return e . join(" & amp; )}}; var q = { init:function(){ new N({ container:"[data-nvk]",url:"/udpl/exp ",params:{ exp:" data-nvk " } } }; T.PARAMS={}, t.init = function (e) {t. params = e; var n= " "+t . params . result class; E.getInstance({})。 support(function(){ t . params . flags . tie back fix & amp; & amp- 1! ==["pc_tieba_list "," pc_tieba_detail"]。 indexOf(t.PARAMS.pageid)? A.init(n,t.PARAMS.imTimeSign):o.init(n,t.PARAMS.imTimeSign),q.init(),t . params . flags . tie back fix & amp; & amp- 1! ==["pc_tieba_list "," pc_tieba_detail"]。 index of(t . params . pageid)& amp; & ampj.init(n,t . PARAMS)} },t . request = e }(this . ecomnspcglobal = this . ecomnspcglobal | | { }); (function (variable) {window.ecomNsPcGlobal.init (variable); })({ " search id ":" BAF 4c 0 EA 788 AC 3 ce "," Eid ":" 238 _ 385 16 _ 36546 _ 386 1 1 _ 3859 1 _ 38596 _ 38486 _ 384 14 _ 38636 _ 26350 _ 3862 1